我有一个简单的问题需要解决,我有一个包含double的变量,我用另一个来自用户输入的读取。我需要将两个数字相加并将结果打印到屏幕上。在我工作的其他语言中,只是它是一个双倍会导致它用小数打印,即使它是一个整数。在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()
或其他一些舍入内容。
答案 0 :(得分:1)
我认为更多的数字解决方案可能是:
var d = 4.0
var ds = Number.isInteger(d) ? d.toPrecision(2) : d.toString();
console.log(ds)
答案 1 :(得分:0)
试试这个:
var d = 2.0;
var parsD = parseFloat(d); //you have to parse d either as Float or Integer
console.log(parsD) // out will be in decimal without rounding up
您必须确定小数位数。现实点。例如对于财务问题,2位小数就可以了。在这种情况下,将第2行更改为:
var parsD = parseFloat(d).toFixed(n) //where n is an integer & number of decimals
这很好用。 在我的情况下,我收到表格上的输入。输入可以是整数或小数。但是在处理时,每个输入都被视为十进制。
答案 2 :(得分:0)