gpt4 book ai didi

javascript - JavaScript 中的精确财务计算。陷阱是什么?

转载 作者:IT王子 更新时间:2023-10-29 02:40:34 26 4
gpt4 key购买 nike

为了创建跨平台代码,我想用 JavaScript 开发一个简单的财务应用程序。所需的计算涉及复利和相对较长的小数。我想知道在使用 JavaScript 进行此类数学运算时要避免哪些错误——如果可能的话!

最佳答案

您可能应该将十进制值缩放 100,并以整分表示所有货币值。这是为了避免 problems with floating-point logic and arithmetic . JavaScript 中没有十进制数据类型——唯一的数字数据类型是 float 。因此,通常建议将钱处理为 2550 美分,而不是 25.50 美元。

考虑在 JavaScript 中:

var result = 1.0 + 2.0;     // (result === 3.0) returns true

但是:

var result = 0.1 + 0.2;     // (result === 0.3) returns false

表达式0.1 + 0.2 === 0.3 返回false,但幸运的是浮点整数运算是精确的,因此可以通过缩放来避免小数表示错误<支持>1.

请注意,虽然实数集是无限的,但只有有限数量的实数(准确地说是 18,437,736,874,454,810,627)可以用 JavaScript 浮点格式精确表示。因此,其他数字的表示将是实际数字2的近似值。


1 道格拉斯·克罗克福德:JavaScript: The Good Parts: Appendix A - Awful Parts (page 105) .
2 大卫弗拉纳根:JavaScript: The Definitive Guide, Fourth Edition: 3.1.3 Floating-Point Literals (page 31) .

关于javascript - JavaScript 中的精确财务计算。陷阱是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2876536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com