3

我有两个值,一个来自用户输入,另一个来自 DB。

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 作为浮点数。

所以 1 / 0.001 = 1000

但是我的 c# 代码给了我 999.999939 作为结果;

var final = float.Parse(userinput) / valuefromDB

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

4

2 回答 2

9

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

更新:要格式化float显示,请查看此 MSDN 参考页面此页面示例

于 2012-06-26T21:22:36.120 回答
1

对于浮点不提供的纯精度,请改用小数。

请参阅C# 中的 Decimal、Float 和 Double 有什么区别?

于 2012-06-26T21:24:16.973 回答