Реальный по сравнению с плавающей точкой по сравнению с деньгами

Провод в событии onunload, которое ничего не делает:

<html><body>
<script type="text/javascript">
  window.onload = function() { alert('window.onload alert'); };
  window.onunload = function(){}; 
  alert('inline alert');
</script>
<a href="1.html">Click Me!</a>
</body></html>
19
задан bignose 13 June 2009 в 03:00
поделиться

4 ответа

Взгляните на , Что Каждый Программист Должен Знать Об Арифметике С плавающей точкой .

Числа с плавающей точкой в компьютерах не представляют десятичные дроби точно. Вместо этого они представляют двоичный файл части. Большинство дробных чисел не имеет точного представления как двоичной дроби, таким образом, существует некоторое продолжение округления. Когда такая округленная двоичная дробь переводится назад в десятичную дробь, Вы получаете эффект, который Вы описываете.

Для хранения денежных значений, базы данных SQL обычно обеспечивают ДЕСЯТИЧНЫЙ тип, который хранит точные десятичные цифры. Этот формат немного менее эффективен, чтобы компьютеры имели дело с, но довольно полезно, когда Вы хотите избежать десятичных погрешностей округления.

45
ответ дан 30 November 2019 в 02:10
поделиться

Числа с плавающей точкой используют двоичные дроби, и они не соответствуют точно десятичным дробям.

За деньги, лучше или сохранить количество центов как целое число или использовать тип десятичного числа. Например, Десятичное число (8,2) хранилища 8 цифр включая 2 десятичных числа (xxxxxx.xx), т.е. к точности цента.

12
ответ дан 30 November 2019 в 02:10
поделиться

Короче говоря это по в значительной степени той же причине, что одной трети нельзя точно выразить в десятичном числе. Взгляните на классическую статью David Goldberg" , Что Каждый Программист Должен Знать Об Арифметике С плавающей точкой " для деталей.

5
ответ дан 30 November 2019 в 02:10
поделиться

Для добавления разъяснения числа с плавающей точкой, сохраненные в компьютере, ведут себя, как описано другими сообщениями здесь, потому что, как описано, это хранится в двоичном формате. Это означает, что, если это не значение (и мантисса и компоненты экспоненты значения) полномочия два и не могут быть представлены точно.

Некоторые системы, с другой стороны, сохраните дробные числа в десятичном числе (Десятичное число SQL Server, и типы Числовых данных и Тип данных Number Oracle, например), и затем их внутреннее представление, поэтому, точно для любого числа, которое является питанием 10. Но затем числа, которые не являются полномочиями 10, не могут быть представлены точно.

1
ответ дан 30 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: