如何从小数点后只有零的字符串生成浮点数

Posted

技术标签:

【中文标题】如何从小数点后只有零的字符串生成浮点数【英文标题】:How to produce a float from a string with only zeros after decimal place 【发布时间】:2014-07-24 21:44:41 【问题描述】:

如何从"69.00"(字符串)生成69.00(浮点数)?

我试过了:

parseFloat("69.00")            // 69
parseFloat("69.00").toFixed(2) // "69.00"

【问题讨论】:

errr,我觉得是正确的 没有发现任何问题。 .00 无论如何都不会显示。 @Rahul,并不是说它被剥离了,它仍然被代表,它只是 69.00 和 69 以及 69.0000 和 69.000000000000 是同一件事。您显示多少小数点是 toFixed 的全部问题 javascript 中只有一种数字类型:IEEE-754 64 位浮点数。如果您想将小数位填充到两个零以进行显示,则只需使用 toFixed(2) 就像您已经在使用一样。 @KeithNicholas,stripped 我不是说截断而是不显示。 【参考方案1】:

除非你实际上有一个小数点后的值,否则浮点数的值将是 69。我不明白你为什么需要这个,如果你真的想打印浮点数,那么你需要将其转换为字符串,在这种情况下,如果您希望它们显示为这样,您可以添加两个零。

【讨论】:

这不是答案,而是评论。我问的原因是因为我很好奇,而不是因为任何现实世界的应用程序。 在某种程度上,这就是答案。就数学运算而言,69、69.00 或 69.000000 没有区别;它们都解析相同,因此没有理由使用没有意义的额外小数来表示实际值。这就像将一个整数设置为 0000000000069 而不仅仅是使用 69。只有在尝试直观地显示它时才需要使用那些额外的零,但在这种情况下,您显示的值不再是一个数字,而是一个字符串遵循不同的规则。 @KevinBeal:这是一个答案,IMO。它回答了你的问题。好的,在某些语言中,存在保留小数的十进制类型,即在 C# 中,69.00m 将存储为 6900*10^-2,并保留零。这不会发生在浮点数中。 69.00 存储为 1,078125 * 2^6。您在屏幕上看到的十进制零的数量是显示功能的结果。

以上是关于如何从小数点后只有零的字符串生成浮点数的主要内容,如果未能解决你的问题,请参考以下文章

格式化没有尾随零的浮点数

将字符串转换为浮点数时缺少小数点[重复]

js浮点数的加减乘除解决方案

将浮点数与字符串连接并舍入到小数点后 2 位

如何舍入一个浮点数?

支持小数点和小数点逗号的字符串到浮点数转换