gpt4 book ai didi

javascript - 如何在 JavaScript 中将数字准确地转换为字符串

转载 作者:行者123 更新时间:2023-11-30 13:04:38 25 4
gpt4 key购买 nike

JavaScript 以 double 浮点格式存储所有数字,具有 52 位尾数和 11 位指数(用于存储数值的 IEEE 754 标准),因此它的数字到字符串的转换通常是不准确。例如,

111111111*111111111===12345678987654321

是正确的,但是

(111111111*111111111).toString()

返回“12345678987654320”而不是“12345678987654321”。同样,0.362*100 产生 36.199999999999996

有没有一种简单的方法可以将数字准确地转换为字符串?

最佳答案

不准确的不是数字到字符串的转换。它是以 float 存储数字本身,因为所有值都不能用 float 精确表示,并且可以存储的有效数字位数有限(大约 16 位)。如果您需要完美的精度,您就不能使用 float ,而且您当然不能使用具有这么多有效数字的数字。替代方案是整数、二进制编码的小数、大十进制库等...

这是一个用 float 表示某些值的问题的简单演示:http://jsfiddle.net/jfriend00/nv4MJ/

根据您实际要解决的问题,小数精度问题通常可以通过在转换为显示时使用 toFixed(n) 来解决。

阅读其他引用以获得更多解释:

How to deal with floating point number precision in JavaScript?

Why can't decimal numbers be represented exactly in binary?

What range of numbers can be represented in a 16-, 32- and 64-bit IEEE-754 systems?

Why Floating-Point Numbers May Lose Precision - MSDN - Microsoft

Is floating point math broken?

Accurate floating point arithmetic in JavaScript

https://stackoverflow.com/questions/744099/is-there-a-good-javascript-bigdecimal-library

关于javascript - 如何在 JavaScript 中将数字准确地转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16131110/

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