数学.全数字发言

本文关键字:数字 数学 | 更新日期: 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。

数学.全数字发言

doublefloat的内部表示方式对许多数字来说都缺乏精度,这意味着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;