我卡在這裏有點問題,說你有下面的代碼:鑄造INT將翻一番,四捨五入到最後整數
int whole = 0;
double decimal = 88.00
whole = decimal/1.5; //now the answer is 58.66
所以這裏的問題,明確鑄造雙爲int很簡單。但是如果我現在這樣做,'整體'將被設置爲59.這個 - 不太好,我希望它被設置爲最後一個整數(是58)。
你如何在C#中做到這一點?
我卡在這裏有點問題,說你有下面的代碼:鑄造INT將翻一番,四捨五入到最後整數
int whole = 0;
double decimal = 88.00
whole = decimal/1.5; //now the answer is 58.66
所以這裏的問題,明確鑄造雙爲int很簡單。但是如果我現在這樣做,'整體'將被設置爲59.這個 - 不太好,我希望它被設置爲最後一個整數(是58)。
你如何在C#中做到這一點?
如果要舍入到最後一個整數,請使用Math.Floor,如果要舍入到下一個整數,則使用Math.Ceiling。
這將轉換的雙重價值爲int
:
whole = (int)(decimal/1.5);
此外,您還可以使用Math.Floor(doubleValue)
。
如果你投double
到int
,答案不會是59 - 這將是58.當鑄造double
到int
,該值將被舍向零。所以,這是足夠了:
int whole = 0;
double x = 88.00;
whole = (int)(x/1.5); // whole will be 58
他希望整體= 59:p – 2012-07-26 12:40:18
@John OP指出「我希望它被設置爲最後一個整數(是58)」。 – 2012-07-26 12:45:11
哦,我不明白... :)謝謝! – 2012-07-26 12:56:24
爲了圓雙打爲整數,您有4個基本的數學函數:
Math.Round()
- 舍入到最接近的整數(或deciml地方的用戶指定數目) ,並讓您選擇向上或向下舍入中間點。
Math.Floor()
- 將第一個整數向負無窮回合。
Math.Ceiling()
- 將第一個整數向正無窮大舍入。
Math.Truncate()
- 將第一個整數向下舍入爲零。
我想你想要麼Floor
或Truncate
。兩輪均爲正數,但Truncate
輪爲-3.6至-3,而Floor
輪爲-4。
鑄造到int
與截斷相同,所以你可以使用,如果你喜歡。
如果您需要四捨五入,這是很常見的使用方法: 整個=(INT)(十進制/ 1.5 + 0.5); 沒有0.5,你會截斷,而不是四捨五入。
如果你在你的數學庫舍入函數,這是很好的了。其中一些將湊齊0.5的奇數/偶數來避免數據歪斜。
使用回合。我認爲這會奏效。 – 2012-07-26 12:28:12
使用'Math.Floor(十進制/ 1。5);' – Matzi 2012-07-26 12:28:47
任何人也有一個WTF時刻「雙十進制類型?」 :) – 2012-07-26 12:31:39