【发布时间】:2017-03-12 22:01:29
【问题描述】:
我有一个简单的问题要解决,我有一个包含双精度的变量,我正在从用户输入中读取另一个双精度。我需要将这两个数字相加并将结果打印到屏幕上。在我使用过的其他语言中,即使它是一个整数,它也是一个双精度数的事实会导致它打印一个小数点,即使它是一个整数。在 Javascript 中,情况并非如此。
var d = 2.0;
console.log(d) // out is 2
我可以使用toFixed() 强制它打印小数点,但随后它将对其他输入的结果进行四舍五入。如果结果是 2.0,我希望它打印“2.0”,如果结果是 2.345,我希望它打印“2.345”。
我现在的解决办法是,如果是整数,就转成字符串:
var d2 = 4.0
console.log((d2 % 1 == 0) ? d2+".0" : d2) // out is 4.0
我觉得必须有更好的方法来做到这一点。这对我来说似乎很笨拙。我一直在寻找解决方案,但到目前为止我发现的所有内容都使用toFixed() 或其他一些舍入。
【问题讨论】:
-
JavaScript 只有一种类型的数字,所以一切都是双精度数。它不关心它是否是一个整数;您必须手动进行格式化。
-
在 JavaScript 中没有十进制或双精度这样的东西。一切都是数字,这很令人困惑(并且与大多数语言不同)
标签: javascript