У меня есть два значения: один от пользовательского ввода и другой от БД.Float/Float = странный результат
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 ...
Это следствие точности поплавка. – Candide
Каждый программист должен понимать числа с плавающей запятой: http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers – mellamokb
Вам нужна точность базы 10 или вам нужна база 2? –