Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中将整数打印为十进制而不进行舍入_Javascript - Fatal编程技术网

在Javascript中将整数打印为十进制而不进行舍入

在Javascript中将整数打印为十进制而不进行舍入,javascript,Javascript,我有一个简单的问题要解决,我有一个变量包含一个double,我从用户输入中读取另一个double。我需要将两个数字相加,然后将结果打印到屏幕上。在我使用过的其他语言中,如果它是双精度的,那么即使它是一个整数,也会用十进制打印出来。在Javascript中,情况并非如此 var d = 2.0; console.log(d) // out is 2 我可以通过使用toFixed()强制它打印一个小数,但随后它将对其他输入的结果进行四舍五入。如果结果是2.0,我希望它打印“2.0”,如果结果是2.

我有一个简单的问题要解决,我有一个变量包含一个double,我从用户输入中读取另一个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()
或其他舍入方法

我认为一个更具数字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