Javascript |浮点数字

Javascript | floating point numbers

当使用 console.log() 对 return 分配 2 个带小数点的变量并计算它们的总和时,如果它们等于整数,则结果 return它没有小数点。

例如

 let num1 = 2.2;
 let num2 = 2.8;
console.log(num1 + num2 )

returns 5 when I require 5.0 to be returned.

我试过固定(1)但测试需要returned

各种数字

例如

let num1 = 2.22
 let num2 = 2.71
console.log((num1 + num2)toFixed(1))

returns 4.9 when I require 4.93

有没有办法可以为变量分配一个浮点小数并保持其状态,即使 return 值是整数?

问题是你不知道加法前有多少位小数。

假设您想保留最长的小数位数,您可以编写如下函数:

function decimalPlaces(arr) {
  return Math.max(...arr.map(n => n.toString().split(".")[1].length))
}

console.log((2.8 + 2.2).toFixed(decimalPlaces([2.8, 2.2])))

console.log((2.22 + 2.71).toFixed(decimalPlaces([2.22, 2.71])))

console.log((1.7 + 1.3001).toFixed(decimalPlaces([1.7, 1.3001])))

但请注意,您必须将原始数字传递给数组中的函数...由您决定它是否有用。

toFixed()->此方法将字符串舍入到指定的数字decimals.If小数位数大于数字中的数字,添加零。


let num1 = 2.2
let num2 = 2.8
console.log((num1 + num2).toFixed(1))

returns=> 5.0

function add(num1, num2) {
    const num1PointLength = String(num1).split(".")[1]?.length || 0;
    const num2PointLength = String(num2).split(".")[1]?.length || 0;
    return (num1 + num2).toFixed(num1PointLength > num2PointLength ? num1PointLength : num2PointLength);
}

let num1 = 2.2;
let num2 = 2.8;

console.log(add(num1, num2));