我有两个值,一个来自用户输入,另一个来自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...
发布于 2012-06-27 05:22:36
这是因为并不是所有的十进制数都可以用二进制(即the representation that float
uses)准确地表示。解决方案是将结果格式化为所需的小数位数,这将导致结果被四舍五入并“正确”显示。
更新:要格式化float
以进行显示,请查看this MSDN reference page和this page of examples。
发布于 2012-06-27 05:24:17
对于float不提供的纯精度,请使用decimal。
请参阅What is the difference between Decimal, Float and Double in C#?
https://stackoverflow.com/questions/11216095
复制相似问题