Вечно с этими дробными значениями проблемы...
есть подозрение что после 20-го(примерно) знака у него какойто мусор в памяти, видимо чота там программисты захардкодили думая что никто после 20-го знака не полезет :))
Таки да: https://en.wikipedia.org/wiki/Extended_precision#x86_Extended_Precision_Format. Захардкодили не просто так, а для скорости (вычисления с плавающей точкой - узкое место). Там шестьдесят четыре бита мантиссы, т. е. примерно двадцать десятичных знаков.
Не очень понял, при чем какое-то "захардкоживание". Числа с плавающей точкой здесь хранятся в двоичной системе. Тут причина в том, что не все конечные десятичные дроби представимы в виде конечных двоичных дробей. Числа вроде 0,1 в двоичном виде в область памяти ограниченного размера ее целиком записать нельзя, только округлив до какой-то точности. Точно так же нельзя конечной десятичной дробью записать, например, 1/7.
Нет. Причина в том, что количество битов в мантиссе конечно.
Или, вернее так: ошибка вообще возникает из-за конечных десятичных дробей, а в двадцатом знаке она из-за мантиссы в шестьдесят четыре бита.
Если совсем уж придираться, то в примере на JavaScript в случае дроби 0,5 мантисса точно такой же длины, а ошибки нет. Как раз потому, что 1/2 может быть точно представлена в виде двоичной дроби.
Но корень квадратный из четырех тоже можно точно представить в двоичной системе.
самый простой вариант 0.1+0.2 = 0.30000000000000004
У меня такой-же результат, не так как у ТС
Это инженерный так считает. ПРи переключении на обычный такой :
Win7 тоже не смог
На WinXP всё ещё хуже.. там вообще выглядит так, словно 2 - 2 = -8,1
Вы искренне считаете, что большинство людей - бараны, не замечающие E-39 и/или не знающие, что это такое?
За 20 лет "компьютеризации" и работы с Экселем - большинство уже информированы.
За 20 лет "компьютеризации" и работы с Экселем - большинство уже информированы.
Лично я вот искренне считаю, что вычитая 2 из 2, в ответе должен быть 0, а не хренова экспонента с кучей знаков после запятой. И, черт возьми, я не про это писал! Сложно прочитать фразу "выглядит так, словно" и посмотреть на скриншоты?
Ты написал, что "выглядит словно -8.1". Я именно по этому поводу и ответил. Что так оно выглядит только для тех, кто не в теме (столкнулся первый, например), а не в теме этой беды на сегодня уже совсем мало людей.
По поводу самой беды - ну ты ж в курсе, откуда она берется? А зачем на обычном калькуляторе использовать нестандартного собственного монстра вместо нативных для CPU типов данных? Там же гемора будет столько, что из-за этого юзер-френдли калькулятора они бы не доделали половину более полезной в винде чепухи.
По поводу самой беды - ну ты ж в курсе, откуда она берется? А зачем на обычном калькуляторе использовать нестандартного собственного монстра вместо нативных для CPU типов данных? Там же гемора будет столько, что из-за этого юзер-френдли калькулятора они бы не доделали половину более полезной в винде чепухи.
Чтобы написать коммент, необходимо залогиниться