Float / Float =奇怪的结果

时间:2012-06-26 21:20:49

标签: c# asp.net-mvc floating-point

我有两个值,一个来自用户输入,另一个来自数据库。

var userinput = form["someInput"];
var valuefromDB = GetValue(someNumber);

public float? GetValue(int id){
return (float?) db.table.where(p=> p.id == id).select(p=> p.Value).SingleOrDefault();
}

userinput的值为“1”作为字符串,而valuefromDB的值为0.001,为float。

所以1 / 0.001 = 1000

但是我的c#代码给了我999.999939;

var final = float.Parse(userinput) / valuefromDB

当我有“2”作为用户输入值时,结果是正确的,2000 ...

2 个答案:

答案 0 :(得分:9)

那是因为并非所有十进制数都可以用二进制精确表示(the representation that float uses)。解决方案是将结果格式化为所需的小数位数,这将导致它被舍入并因此“正确”显示。

更新要格式化float进行展示,请查看this MSDN reference pagethis page of examples

答案 1 :(得分:1)

对于浮点数不提供的纯精度而是十进制。

请参阅What is the difference between Decimal, Float and Double in C#?