C# 浮动=奇怪的结果
我有两个值,一个来自用户输入,另一个来自数据库C# 浮动=奇怪的结果,c#,asp.net-mvc,floating-point,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”作为字符串,而va
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作为浮点
so 1/0.001=1000
但我的c#代码给了我999.999939
var final = float.Parse(userinput) / valuefromDB
当我将“2”作为用户输入值时,结果是正确的,2000…这是因为并不是所有的十进制数都可以用二进制(即二进制)精确表示。解决方案是将结果格式化为所需的小数位数,这将导致结果被舍入并“正确”显示
更新:要格式化显示的
浮点
,请查看和。对于浮点未提供的纯精度,请改用十进制
请参见这是浮点精度的结果。每个程序员都应该理解浮点数:你需要10进制精度,还是2进制精度?你能给我一个简单的c#示例吗?:)@NovkovskiStevoBato:更新了答案。