我需要在点后有2个符号[重复]

Posted

技术标签:

【中文标题】我需要在点后有2个符号[重复]【英文标题】:I need to have 2 symbols after dot [duplicate] 【发布时间】:2012-01-03 21:18:55 【问题描述】:

可能重复:How can I format numbers as money in javascript?Format number to always show 2 decimal placesHow do I round to 2 decimal places?

php 中,我可以执行以下操作以四舍五入到小数点后 2 位;

$number = 3.45667;
$result = number_format($number, 2, '.', ''); // 3.46

如何在 JavaScript 中做同样的事情?

【问题讨论】:

您接受了一个丑陋且无效的解决方案。干得好! 【参考方案1】:
var number = 3.45667;
number = Math.round(100 * number) / 100;

然而,这不会像 PHP 的 number_format() 那样工作。 IE。它不会将 2.4 转换为 2.40。为了使它起作用,您需要更多:

number = number.toString();
if (!number.match(/\./))
    number += '.';
while (!number.match(/\.\d\d$/))
    number += '0';

【讨论】:

无需将 2.4 转换为 2.40。我只需要在点后不超过 2 个符号。它会起作用吗? 是的,@pzztzz。只需在 Firebug 控制台或 JSfiddle 上启动它。 您的第一个解决方案不正确。考虑 0.005 是如何工作的【参考方案2】:
var number = 3.45667;
number.toFixed(2)
// returns "3.46"

toFixed() 是小数点后出现的位数。它还将填充 0 以适应输入大小。

【讨论】:

【参考方案3】:

你可以使用下面的代码

var number = 3.45667;
number.toFixed(2);

如果要使用四舍五入,请先乘以 100,然后四舍五入并除以 100。

【讨论】:

@Matt,四舍五入正是我们所要求的。 @AlexeyLebedev:我想马特指的是答案中的最后一句话,这是不必要的,因为toFixed() 确实圆了。 好吧,如果他想要 floor 或 ceil,他需要使用 Math 对象【参考方案4】:

简单版:像这样使用.toFixed():

var num= 3.45667;
num.toFixed(2); // 3.46

复杂的版本,如果你想要 number_format() 的确切行为是使用this method from php.js:

var num= 3.45667;
number_format($number, 2, '.', ''); // 3.46

【讨论】:

以上是关于我需要在点后有2个符号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

闪亮的UI - 如何使文本在点符号后的同一位置开始

iOS - 架构 armv7 的 2 个重复符号

避免浮点精度问题

EXCEL中同一列(几百个)单元格内,都要加入标点符号(°)的快捷方式

Firebase CocoaPods 出现重复符号链接器错误

xcode ld:架构 x86_64 的 8 个重复符号