如何仅在必要时在JavaScript中对数字进行四舍五入
我想在JavaScript中对一个数字进行四舍五入,但只在必要时将其小数点后两位 例如,4.5为4.50,3.331为3.331 我试过使用Math.roundnumber/100*100,但当数字为4.5时,它会给我4.5,我希望它是4.50 我尝试过使用.toFixed2,但当数字为3.331时,它会将其修正为3.33如何仅在必要时在JavaScript中对数字进行四舍五入,javascript,Javascript,我想在JavaScript中对一个数字进行四舍五入,但只在必要时将其小数点后两位 例如,4.5为4.50,3.331为3.331 我试过使用Math.roundnumber/100*100,但当数字为4.5时,它会给我4.5,我希望它是4.50 我尝试过使用.toFixed2,但当数字为3.331时,它会将其修正为3.33 非常感谢您的帮助。使用正则表达式检查点后的数字。如果小于2,则使用toFixed2,否则不执行任何操作 功能fn{ 设diff=Numbern-Math.floorNumb
非常感谢您的帮助。使用正则表达式检查点后的数字。如果小于2,则使用toFixed2,否则不执行任何操作 功能fn{ 设diff=Numbern-Math.floorNumbern; return/\[0-9]{2,}/.testdiff.toString?n:n.toFixed2 } 常量nums=[3.331,2.5,3].mapf
console.lognums使用正则表达式检查点后的数字。如果小于2,则使用toFixed2,否则不执行任何操作 功能fn{ 设diff=Numbern-Math.floorNumbern; return/\[0-9]{2,}/.testdiff.toString?n:n.toFixed2 } 常量nums=[3.331,2.5,3].mapf
console.lognums您可以检查固定值是否更改并选择格式类型 函数格式F{ 返回f==+f.toFixed2 ?f.toFixed2 :f.toString }
log[4.5,3.331,3].mapformat 您可以检查固定值是否更改并选择格式类型 函数格式F{ 返回f==+f.toFixed2 ?f.toFixed2 :f.toString }
log[4.5,3.331,3].mapformat 您可以尝试应用conditionallu-toFixed方法: 常量数=[4.5,3.331]; 常量浮动=numbers.map n=>{ 常量floatLen=n.toString.split'.[1]; 伊夫洛特伦{ iffloatLen.toString.length<2{ 返回n.toFixed2; } } 返回n; } ;
控制台浮动 您可以尝试应用conditionallu-toFixed方法: 常量数=[4.5,3.331]; 常量浮动=numbers.map n=>{ 常量floatLen=n.toString.split'.[1]; 伊夫洛特伦{ iffloatLen.toString.length<2{ 返回n.toFixed2; } } 返回n; } ;
控制台浮动 这看起来像字符串格式,而不是舍入问题:
var value = 4 + '.';
var [num, dec] = value.split('.');
if (dec.length < 2) {
dec = (dec + '00').substring(0, 2);
}
console.log(`${num}.${dec}`);
可运行代码段:
函数格式值{
var[num,decimal]=value+'.split';
如果decimal.length<2{
十进制=十进制+00'。子字符串0,2;
}
返回`${num}.${decimal}`;
}
log[4,4.5,3.331].mapformat 这看起来像字符串格式,而不是舍入问题:
var value = 4 + '.';
var [num, dec] = value.split('.');
if (dec.length < 2) {
dec = (dec + '00').substring(0, 2);
}
console.log(`${num}.${dec}`);
可运行代码段:
函数格式值{
var[num,decimal]=value+'.split';
如果decimal.length<2{
十进制=十进制+00'。子字符串0,2;
}
返回`${num}.${decimal}`;
}
log[4,4.5,3.331].mapformat;您有更多的用例吗?@DevsiOdedra dup target的可能重复并没有解决这个用例,它没有舍入一个数字,而是填充它。舍入意味着您删除了一些最小的数字,并向上或向下调整余数以解释它们。为什么保持3.331?您有更多的用例吗?@DevsiOdedra dup target的可能副本没有解决这个用例,它没有舍入一个数字-这是在填充它。舍入意味着删除一些最小的数字,并向上或向下调整余数以解释它们。为什么保持3.331?num=3呢?因为OP没有问它,所以我忽略了它。新的解决方案不像以前那样工作-2.5变为2.5现在它返回不同的类型-有时是整数,其他时候是字符串…num=3呢?因为OP没有问它,所以我忽略了它。新的解决方案不像以前那样工作-2.5变成了2.5现在它返回不同的类型-有时是整数,其他时候是字符串…没有直接关系,但num和digit是混淆的名称。数字就是数字。此外,任何长度不是1的数字都是不可能的。我不认为限制为1,必须重命名变量名称。数字是创建数字的单个符号-1、2、3、4、5、6、7、8、9和0都是十进制数字。例如,十六进制还有a、b、c、d、e、f。一个数字是由一个或多个数字组成的,因此每个数字都是由一个或多个数字组成的。这就是为什么你有一个两位数的数字,比如42或55,或者三位数的数字-123、216、715等等。我明白了,你没有提到这个变量。没有直接关系,但是num和digit是混淆的名称。数字就是数字。此外,任何长度不是1的数字都是不可能的。我不认为限制为1,必须重命名变量名称。数字是创建数字的单个符号-1、2、3、4、5、6、7、8、9和0都是十进制数字。例如,十六进制还有a、b、c、d、e、f。一个数字是由一个或多个数字组成的,因此每个数字都是由一个或多个数字组成的。这就是为什么你有一个两位数的数字,比如42或55,或者三位数的数字-123,216,715,等等。我明白了,你不是指变量。