2012-03-08 74 views
6

Tôi cần phải kiểm tra xem một biến là một số nguyên, nói tôi có mã:Có cách nào để kiểm tra xem một biến có phải là một số nguyên không? C++

double foobar = 3; 
//Pseudocode 
if (foobar == whole) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 

Làm thế nào tôi sẽ làm điều này?

+0

tả xin lỗi, có nghĩa là tăng gấp đôi, chỉ cần thay đổi nội dung – Billjk

+2

Tôi nghĩ rằng bạn có một vấn đề XY: bạn có vấn đề X và giải pháp tiềm năng Y, vì vậy bạn đang hỏi về sau này dù bạn nên có hỏi về cái cũ. –

Trả lời

13

Giả sử foobar là trong thực tế một giá trị dấu chấm động, bạn có thể làm tròn nó và so sánh với số lượng bản thân:

if (floor(foobar) == foobar) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 
+0

Không có gì để làm tròn xuống trong một số nguyên. –

+0

Rất tiếc xin lỗi, có nghĩa là gấp đôi, chỉ cần chỉnh sửa – Billjk

2

Bạn đang sử dụng int vì vậy nó sẽ luôn là một "toàn bộ" số. Nhưng trong trường hợp bạn đang sử dụng một đôi thì bạn có thể làm điều gì đó như thế này

double foobar = something; 
if(foobar == static_cast<int>(foobar)) 
    return true; 
else 
    return false; 
1

Phụ thuộc vào định nghĩa của bạn về số nguyên. Nếu bạn chỉ xem xét 0 và cao hơn là số nguyên thì nó đơn giản như: bool whole = foobar >= 0;.

+0

@downvoter: Định nghĩa về số nguyên là không chính xác. Xem wikipedia: http://en.wikipedia.org/wiki/Whole_number. – Asha

+0

huh, chưa bao giờ nghe nói về điều đó. Mỗi khi nó xuất hiện, mọi người tôi đã nói chuyện đồng ý với định nghĩa. –

0

chỉ cần viết function hoặc expression để kiểm tra whole number, trả lại bool.

theo định nghĩa thông thường, tôi nghĩ rằng toàn bộ số lớn hơn 0 không có phần thập phân.

sau đó,

if (abs(floor(foobar))== foobar) 
    cout << "It's whole"; 
else 
    cout << "Not whole"; 
+1

Lưu ý: có chỉnh sửa được đề xuất "quá triệt để" bị từ chối: http://stackoverflow.com/review/suggested-edits/5928097 –

Các vấn đề liên quan