2015-12-21 1 views
2

Можно ли использовать тип номера JavaScript (64-битная двойная точность) для операций с деньгами? Мы планируем разработать программное обеспечение для малого бизнеса, а суммы обычно составляют менее 100 000 долларов США, но я думаю, что цифры могут быть намного больше, потому что мы используем местные валюты и, например, 1 $ = 6.5 китайских юаней.Насколько безопасен тип номера JavaScript для операций с деньгами?

Я знаю, что может быть потеряна точность, но насколько это плохо в реальном мире?

Я также полагаю, что мы можем пропустить проблемы, как

0.2 + 0.1 = 0.30000000000000004 

, потому что после усечения номера с помощью настроек в местной валюте было бы то же самое, например, $0.30

Некоторые люди также рекомендуют для масштабирования значений путем умножения на 100, но я не уверен, что это будет работать в любой ситуации, потому что я предлагаю, что после точки могут быть валюты с более чем двумя цифрами.

+4

http://stackoverflow.com/questions/6589293/currency-operations-with-javascript – RomanPerekhrest

+0

могли бы вы отмечаете первый ответил ответ как ответ? –

ответ

1

Я думаю, что лучший способ использует специальные библиотеки

как bignumber.js

Например:

0.3 - 0.1       // 0.19999999999999998 
x = new BigNumber(0.3) 
x.minus(0.1)      // "0.2" 
x         // "0.3" 
3

Я хотел бы предложить вам использовать целые числа, когда вы имеете дело с деньгами. Floating point arithmetic is broken и является ненадежным, поэтому лучше использовать фиксированные расчеты типа денег.

Однако есть bignumber.js библиотека, которая часто используется для расчетов с расчетами.

Вот хорошая ссылка, и связанной с ними нить на том же: Precise Financial Calculation in JavaScript. What Are the Gotchas?

Смежные вопросы