不久前我在测试一些 HTML 表单时遇到了这个问题。JavaScript Number 中带小数点的最大位数仅为 16
我已经尝试了以下
var x = 12345678912345.6789
Run Code Online (Sandbox Code Playgroud)
x 是 12345678912345.68 -仅 16 位
var x = 123456789123.6789
Run Code Online (Sandbox Code Playgroud)
x 是 123456789123.6789 -仅 16 位
new Number(12345678912345.6789)
Run Code Online (Sandbox Code Playgroud)
12345678912345.68 -仅限 16 位数字
new Number(123456789123.6789)
Run Code Online (Sandbox Code Playgroud)
123456789123.6789 -仅限 16 位数字
如果计算总位数,它们是16。如果在小数点前增加位数,则小数点后的位数会四舍五入
相似地
new Number(.12345678912367890)
Run Code Online (Sandbox Code Playgroud)
是 0.1234567891236789 -仅 16 位(注意缺少尾随 0)
这让我推断出一个数字中只能有 16 位数字,其中包含小数。如果我尝试添加更多数字,数字就会开始四舍五入
我还观察到,当我在 ASP.NET MVC 中将一个带十进制数的数字序列化为 JSoN 时,它还会将该数字转换为 Max 16 Digits 并将其余部分四舍五入
我的问题:为什么?