У меня есть переменная типа float с некоторым значением, и есть точка, в которой это значение передается переменной двойного типа, в этот момент значение в переменной float больше не является тем, что я см. в переменной двойного типа. Для того, чтобы этот пример легко следовать, я делаю это в ближайшее окно, чтобы произвести Что происходит:float to double change change value
(double)float.Parse ("-0.00146256")
дает мне -0,001462560030631721
«-0,00146256» (в строке да) происхождение это значение, и его хранится в float с float.Parse(), где-то в коде, а затем в более поздней точке сбрасывается в double.
Почему значение переменной меняется на другую в двойной переменной и что я могу сделать, чтобы предотвратить это неточное поведение?
использовать десятичные, если вы хотите точность –
__No__. Значение десятичных цифр в строке: __not__ хранится в полях или в двойном. Они __приближены! Никакие десятичные значения, кроме степеней 2, не являются __storable__ в форматах двоичных чисел. – TaW
@TaW Да, целые кратные (разумные) степени 2, если быть точными. Например, '0.8125' является представимым, потому что оно равно 13 (целое число) раз 2 ** (- 4). –