数学.全数字发言
本文关键字:数字 数学 | 更新日期: 2023-09-27 17:57:39
我正在使用Math.Floor方法来找出数字a在数字b中的次数。在这个具体的例子中,变量具有以下值:
double a = 1.2;
double b = 0.1;
double c = Math.Floor(a / b) * b;
这将返回c=11,而不是我认为的c=12。我想这与舍入有关,但我如何才能使它正常工作?当我把数字a提高到1,21时,它返回12。
double
和float
的内部表示方式对许多数字来说都缺乏精度,这意味着a
可能不完全是1.2
(但是,比如说,1.199999999…),而b
可能不完全为0.1
。
如果您想要精确的精度,对于像货币这样没有误差范围的量,请使用decimal
。
看看Math.Floor是如何工作的。。基本上,它是四舍五入的。。。
我的猜测是,在双打比赛中,你不会真正获得12分(尽管这似乎会奏效:double d = a/b; // d=12
)。
Solal也指出了这一点,并给出了关于十进制的好建议:)
以下是小数的情况:
decimal a = 1.2m;
decimal b = 0.1m;
decimal c = Math.Floor(a / b) ; // c =12
代码的结果是1.1
。我假设你想要1.2
。你需要使用
double c = Math.Ceiling(a / b) * b;