【问题标题】:Is it okay to store numbers as a float?可以将数字存储为浮点数吗?
【发布时间】:2017-01-14 06:33:58
【问题描述】:

相当简单的问题,但我知道我必须澄清一下 - 我不是在谈论进行任何类型的操作

我有一些货币值和其他十进制值需要处理。将它们存储为浮点数是否安全,当需要进行任何类型的操作时,将它们转换为整数,然后再返回浮点数(假设我可以处理小数位)。我理解使用浮点数进行数学运算时的精度错误,但是为了便于使用而简单地存储它们有什么明显的危险吗?

【问题讨论】:

  • JavaScript 中的每个数字不都是双精度数吗?
  • javascript 有一种类型的数字...数字...这是一个 64 位浮点数...除非您使用 Int8Array、Uint8Array、Int16Array、Uint16Array、Int32Array、Uint32Array 或 Float32Array 当然
  • 我会说这很安全,但是,我想知道 javascript 是如何从操作中获得浮点精度的。例如,stackoverflow.com/questions/588004/… 在 python 中你会得到这样奇怪的东西。所以if(a+b == 0.3) 可能是个问题。
  • @AshwinGupta 这就是在操作之前转换为 int 背后的全部想法,我只是想确保除了存储之外什么都不做是完全安全的。
  • @Thirk 哦,在这方面你应该没问题。请记住,== 检查等效性,=== 检查类型和等效性。

标签: javascript floating-point integer


【解决方案1】:

-2^24 和 2^24 之间的任何整数都可以无错误地与单精度浮点数相互转换;对于双精度,它是 -2^54 到 2^54。就此而言,您可以对它们进行浮点运算而不会引入任何错误,只要保证结果是相同范围内的整数即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多