Недавно я работал над системой проверки, основанной на flex 3, и имел общую сумму заказа, которая для меня не имела смысла. Я добавлял промежуточный итог, стоимость доставки и налог. Все три значения были округлены до двух знаков после запятой, но мой ответ вообще не округлялся.дополнение в flex 3
После изучения того, что происходило, я обнаружил, что каждый раз, когда вы добавляете 0,95 и 0,15 вместо получения 1.1, вы получаете повторение 1.09999999. Начиная с вариаций этого не имеет значения, в моем первоначальном случае это было (17.95 + 5 + 1.15). Flex дал мне 24.09999.
Есть ли причина для этого? Я могу снова закончить окончательное число и получить правильный результат, но кажется странным, что такая базовая арифметика была бы неправильной. Благодарю.
Вы, вероятно, лучше всего с помощью [toPrecision()] (http://help.adobe.com/en_US/FlashPlatform/reference /actionscript/3/Number.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#toPrecision()) по номеру. Это в значительной степени проблема на большинстве языков, которые специально не предназначены для хрустания чисел и связаны с тем, как это число хранится на компьютере. –
Показать код. – JeffryHouser