我卡在这里有点问题,说你有下面的代码:铸造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