尝试将float转换为int但是缺少了一些东西
float submittedAmount = 0.51f;
int amount = (int)(submittedAmount * 100);
为什么答案是50?
答案 0 :(得分:5)
由于浮点aritmethics,乘法值不完全 51 。当我现在尝试时,* 0.51f * 100 *给出了结果 50.9999990463257 。
当你解析 50.9999990463257 和int时,你肯定会得到 50 。
如果您希望这样的计算准确无误,则必须使用类似decimal
的类型,而不是float
。
如果您想了解原因,请阅读我在下面链接的文章。
What Every Computer Scientist Should Know About Floating-Point Arithmetic
答案 1 :(得分:1)
尝试
int amount = (int)(submittedAmount * 100.0);
撰写时,0.51f
并不完全是0.51
阅读这篇名为What Every Computer Scientist Should Know About Floating-Point Arithmetic
答案 2 :(得分:0)
使用转换类。否则答案仍然是50。
var amount = Convert.ToInt32(submittedAmount * 100.0));
答案 3 :(得分:0)
0.51f
实际上是0.509999999999
。因为浮点不精确。
我想补充一点,不要使用float
进行货币计算。请改用decimal
。