[英]How to check if variable is whole in C++ without a math library
我正在為一個初學者C ++類編寫一個小程序,我應該從用戶那里獲取一個輸入(我正在使用double,因為我喜歡讓自己更難)並輸出它是素數還是復合,以及如果它是復合的,我需要輸出至少一個數字,該數字可被整除。
我手上有太多時間,所以我會走開一點讓它變得更難。 我試圖做任何事情,除了iostream之外什么都不用。 我已經掌握了大部分內容,但這一點讓我感到困惑:如何在不使用數學庫的情況下確定double是否為整數?(我在這里找到了使用math.h的好解決方案的問題,但沒有它沒有它)我想有一種方法可以做到這一點,而不用編寫50行代碼就可以看出這么簡單......
您可能不應該在浮點數上進行任何計算,但是測試數字是否具有小數的簡單方法是發言並將其與原始數據進行比較。 在C ++中,您可以通過轉換為int
(假設只有正數)然后轉換回double
來發言:
bool isWhole( double d ) {
int whole = d; // will round down to the nearest integer
return (d-whole < epsilon); // for a small enough epsilon
}
您可以將double
值轉換為適當大的整數類型,然后查看這兩個值是否相同:
double d = /* whatever */
long long ival = d;
if (ival == d) {
/* d holds integral value. */
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.