Никому нельзя верить
Jan. 9th, 2015 10:18 amКак говорят на юге - lest we forget. Или, как говорят на севере, я просто оставлю это здесь.
Win7x64, .Net 4ю0, C# , MSVS-2010.
double x = 2478.6;
double y = 503.88;
double z = 1974.72;
x - y = 1974.7199999999998
"" + (x - y) = "1974.72"
x - y - z = -0.00000000000022737367544323206
"" + (x - y - z) = "-2.27373675443232E-13"
Double.Parse("" + (x - y - z)) = -0.000000000000227373675443232
Double.Parse("" + (x - y - z), System.Globalization.NumberStyles.Number) -> Exception.
Документация про это грустно говорит "double does not guarantee precision". Но я их всё равно ненавижу.
Только не спрашивайте, зачем это такое вообще появилось в коде. Это индусское программирование, его простым людям не понять. Простым людям достаточно научиться это вовремя чинить...
Win7x64, .Net 4ю0, C# , MSVS-2010.
double x = 2478.6;
double y = 503.88;
double z = 1974.72;
x - y = 1974.7199999999998
"" + (x - y) = "1974.72"
x - y - z = -0.00000000000022737367544323206
"" + (x - y - z) = "-2.27373675443232E-13"
Double.Parse("" + (x - y - z)) = -0.000000000000227373675443232
Double.Parse("" + (x - y - z), System.Globalization.NumberStyles.Number) -> Exception.
Документация про это грустно говорит "double does not guarantee precision". Но я их всё равно ненавижу.
Только не спрашивайте, зачем это такое вообще появилось в коде. Это индусское программирование, его простым людям не понять. Простым людям достаточно научиться это вовремя чинить...