在Javascript中将整数打印为十进制而不进行舍入
我有一个简单的问题要解决,我有一个变量包含一个double,我从用户输入中读取另一个double。我需要将两个数字相加,然后将结果打印到屏幕上。在我使用过的其他语言中,如果它是双精度的,那么即使它是一个整数,也会用十进制打印出来。在Javascript中,情况并非如此在Javascript中将整数打印为十进制而不进行舍入,javascript,Javascript,我有一个简单的问题要解决,我有一个变量包含一个double,我从用户输入中读取另一个double。我需要将两个数字相加,然后将结果打印到屏幕上。在我使用过的其他语言中,如果它是双精度的,那么即使它是一个整数,也会用十进制打印出来。在Javascript中,情况并非如此 var d = 2.0; console.log(d) // out is 2 我可以通过使用toFixed()强制它打印一个小数,但随后它将对其他输入的结果进行四舍五入。如果结果是2.0,我希望它打印“2.0”,如果结果是2.
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()
或其他舍入方法 我认为一个更具数字y的解决方案可能是:
var d = 4.0
var ds = Number.isInteger(d) ? d.toPrecision(2) : d.toString();
console.log(ds)
试试这个:
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
你必须决定小数的数目。现实一点。e、 对于财务问题,小数点后2位就可以了。在这种情况下,将第2行更改为:
var parsD = parseFloat(d).toFixed(n) //where n is an integer & number of decimals
这个很好用。
在我的例子中,我接收表单上的输入。输入可以是整数或十进制。但是,在处理时,每个输入都被视为十进制。为了更好地动态打印(没有无用的前导零),请使用: 下面是一个解释示例:
const num = 2.2;
console.log(
Number(num.toFixed(5)).toString()
);
// 2.2
const num = 2.2;
console.log(
num.toFixed(5)
);
// 2.20000
[注意]您可以使用节点解释器更快地进行测试,并拥有一个游乐场:
JavaScript只有一种类型的数字,所以所有数字都是双精度的。它不在乎它是否是一个整数;您必须手动进行格式化。在JavaScript中没有十进制或双精度这样的东西。每件事都是一个数字,仅供参考(与大多数语言相比有很大不同)-如果您想支持internet explorer,您需要一个for
数字。isInteger
-
const num = 2.2;
console.log(
Number(num.toFixed(5)).toString()
);
// 2.2
const num = 2.2;
console.log(
num.toFixed(5)
);
// 2.20000