На жаль, усі відповіді поки що ігнорують той факт, що не всі валюти мають 100 підрозділів (наприклад, цент є підрозділом долара США (USD)). Такі валюти, як іракський динар (IQD), мають 1000 підрозділів: іракський динар має 1000 карт. Японська ієна (JPY) не має підрозділів. Тому "помножити на 100, щоб зробити цілу арифметику" - це не завжди правильна відповідь.
Додатково для грошових розрахунків потрібно також стежити за валютою. Ви не можете додати долар США (USD) до індійської рупії (INR) (без попереднього перетворення одного в інший).
Існують також обмеження щодо максимальної кількості, яка може бути представлена цілим типом даних JavaScript.
У грошових розрахунках ви також повинні мати на увазі, що гроші мають граничну точність (як правило, 0-3 десяткових знаків), і округлення потрібно проводити особливими способами (наприклад, "нормальне" округлення проти округлення банкіра). Тип округлення, який слід здійснити, також може відрізнятися залежно від юрисдикції / валюти.
Як поводитися з грошима в javascript , дуже добре обговорюються відповідні моменти.
У ході пошуку я знайшов бібліотеку dinero.js, яка вирішує багато питань, що стосуються грошових розрахунків . Ще не використовував його у виробничій системі, тому не можу дати про це усвідомленої думки.