Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 浮动=奇怪的结果_C#_Asp.net Mvc_Floating Point - Fatal编程技术网

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:更新了答案。