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));
当使用 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));