Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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,我想在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

我想在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.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,等等。我明白了,你不是指变量。