我想将数字格式化为始终显示2个小数位,并在适用的情况下四舍五入。

例子:

number     display
------     -------
1          1.00
1.341      1.34
1.345      1.35

我一直在使用这个:

parseFloat(num).toFixed(2);

但是它显示11而不是1.00


#1楼

var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120

#2楼

Number(1).toFixed(2);         // 1.00
Number(1.341).toFixed(2);     // 1.34
Number(1.345).toFixed(2);     // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
 document.getElementById('line1').innerHTML = Number(1).toFixed(2); document.getElementById('line2').innerHTML = Number(1.341).toFixed(2); document.getElementById('line3').innerHTML = Number(1.345).toFixed(2); document.getElementById('line4').innerHTML = Number(1.3450001).toFixed(2); 
 <span id="line1"></span> <br/> <span id="line2"></span> <br/> <span id="line3"></span> <br/> <span id="line4"></span> 

#3楼

如果您已经在使用jQuery,则可以使用jQuery Number Format插件。

插件可以将格式化的数字作为字符串返回,您可以设置小数和千位分隔符,还可以选择显示的小数位数。

$.number( 123, 2 ); // Returns '123.00'

您还可以从GitHub获取jQuery Number Format 。


#4楼

最简单的答案:

var num = 1.2353453;
num.toFixed(2); // 1.24

示例: http : //jsfiddle.net/E2XU7/


#5楼

var quantity = 12;var import1 = 12.55;var total = quantity * import1;var answer = parseFloat(total).toFixed(2);document.write(answer);

#6楼

(num + "").replace(/^([0-9]*)(\.[0-9]{1,2})?.*$/,"$1$2")

#7楼

function currencyFormat (num) {return "$" + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
}console.info(currencyFormat(2665));   // $2,665.00
console.info(currencyFormat(102665)); // $102,665.00

#8楼

如果value = 1.005则此答案将失败。

作为更好的解决方案,可以通过使用指数表示法表示的数字来避免舍入问题:

Number(Math.round(1.005+'e2')+'e-2'); // 1.01

@Kon和原始作者建议的更干净的代码:

Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)

您可以在末尾添加toFixed()以保留小数点,例如: 1.00但请注意,它将作为字符串返回。

Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces).toFixed(decimalPlaces)

信用: JavaScript中的舍入小数


#9楼

这也是一个通用函数,可以格式化为任意数量的小数位:

function numberFormat(val, decimalPlaces) {var multiplier = Math.pow(10, decimalPlaces);return (Math.round(val * multiplier) / multiplier).toFixed(decimalPlaces);
}

#10楼

var number = 123456.789;console.log(new Intl.NumberFormat('en-IN', { maximumFractionDigits: 2 }).format(number));

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat


#11楼

为了获得最精确的舍入,请创建以下函数:

function round(value, decimals) {return Number(Math.round(value +'e'+ decimals) +'e-'+ decimals).toFixed(decimals);
}

并将其舍入到小数点后两位:

console.log("seeked to " + round(1.005, 2));
> 1.01

由于Razu , 该文章,并MDN的Math.round参考 。


#12楼

将数字转换为字符串,仅保留两个小数:

var num = 5.56789;
var n = num.toFixed(2);

n的结果将是:

5.57

#13楼

我喜欢:

var num = 12.749;
parseFloat((Math.round(num * 100) / 100).toFixed(2)); // 123.75

将数字四舍五入到小数点后两位,然后确保使用parseFloat()解析它以返回Number而不是String,除非您不在乎它是String还是Number。


#14楼

精度方法扩展数学对象

 Object.defineProperty(Math, 'precision',{ value: function (value,precision,type){ var v = parseFloat(value), p = Math.max(precision,0)||0, t = type||'round'; return (Math[t](v*Math.pow(10,p))/Math.pow(10,p)).toFixed(p); } }); console.log( Math.precision(3.1,3), // round 3 digits Math.precision(0.12345,2,'ceil'), // ceil 2 digits Math.precision(1.1) // integer part ) 

#15楼

这是我解决问题的方法:

parseFloat(parseFloat(floatString).toFixed(2));

#16楼

四舍五入到N位的通用解决方案

function roundN(num,n){return parseFloat(Math.round(num * Math.pow(10, n)) /Math.pow(10,n)).toFixed(n);
}console.log(roundN(1,2))
console.log(roundN(1.34,2))
console.log(roundN(1.35,2))
console.log(roundN(1.344,2))
console.log(roundN(1.345,2))
console.log(roundN(1.344,3))
console.log(roundN(1.345,3))
console.log(roundN(1.3444,3))
console.log(roundN(1.3455,3))Output1.00
1.34
1.35
1.34
1.35
1.344
1.345
1.344
1.346

#17楼

 function number_format(string,decimals=2,decimal=',',thousands='.',pre='R$ ',pos=' Reais'){ var numbers = string.toString().match(/\\d+/g).join([]); numbers = numbers.padStart(decimals+1, "0"); var splitNumbers = numbers.split("").reverse(); var mask = ''; splitNumbers.forEach(function(d,i){ if (i == decimals) { mask = decimal + mask; } if (i>(decimals+1) && ((i-2)%(decimals+1))==0) { mask = thousands + mask; } mask = d + mask; }); return pre + mask + pos; } var element = document.getElementById("format"); var money= number_format("10987654321",2,',','.'); element.innerHTML = money; 
 #format{ display:inline-block; padding:10px; border:1px solid #ddd; background:#f5f5f5; } 
 <div id='format'>Test 123456789</div> 

#18楼

parseInt(number * 100) / 100; 为我工作。


#19楼

我必须在parseFloat()和Number()转换之间做出决定,然后才能进行toFixed()调用。 这是捕获用户输入后格式化数字的示例。

HTML:

<input type="number" class="dec-number" min="0" step="0.01" />

事件处理程序:

$('.dec-number').on('change', function () {const value = $(this).val();$(this).val(value.toFixed(2));
});

上面的代码将导致TypeError异常。 请注意,尽管html输入类型是“数字”,但用户输入实际上是“字符串”数据类型。 但是,toFixed()函数只能在为Number的对象上调用。

我的最终代码如下所示:

$('.dec-number').on('change', function () {const value = Number($(this).val());$(this).val(value.toFixed(2));
});

我偏爱使用Number()和parseFloat()进行转换的原因是,我既不必为空的输入字符串也不必为NaN值执行额外的验证。 Number()函数将自动处理一个空字符串并将其隐藏为零。


#20楼

对于现代浏览器,请使用toLocaleString

var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });

将区域设置标签指定为控制小数点分隔符的第一个参数。 对于点,请使用例如美国英语语言环境:

num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

这使:

1.35

欧洲的大多数国家/地区使用逗号作为小数点分隔符,因此,例如,如果您使用瑞典语/瑞典语区域设置,则:

num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

它会给:

1,35


#21楼

这是仅使用下限进行舍入的另一种解决方案,这意味着确保计算出的金额不会大于原始金额(有时需要交易):

Math.floor(num* 100 )/100;

#22楼

函数numberWithCommas(number){

var newval = parseFloat(Math.round(number * 100) / 100).toFixed(2);return newval.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

}


#23楼

刚遇到这个最长的线程之一,下面是我的解决方案:

parseFloat(Math.round((parseFloat(num * 100))。toFixed(2))/ 100).toFixed(2)

让我知道是否有人可以戳一个洞


#24楼

您可以尝试以下代码:

    function FormatNumber(number, numberOfDigits = 2) {try {return new Intl.NumberFormat('en-US').format(parseFloat(number).toFixed(2));} catch (error) {return 0;}}var test1 = FormatNumber('1000000.4444');alert(test1); // 1,000,000.44var test2 = FormatNumber(100000000000.55555555, 4);alert(test2); // 100,000,000,000.56

#25楼

您在找地板吗?

var num = 1.42482;
var num2 = 1;
var fnum = Math.floor(num).toFixed(2);
var fnum2 = Math.floor(num2).toFixed(2);
alert(fnum + " and " + fnum2); //both values will be 1.00

#26楼

在FF4中可以正常工作:

parseFloat(Math.round(num3 * 100) / 100).toFixed(2);

现场演示

 var num1 = "1"; document.getElementById('num1').innerHTML = parseFloat(Math.round(num1 * 100) / 100).toFixed(2); var num2 = "1.341"; document.getElementById('num2').innerHTML = parseFloat(Math.round(num2 * 100) / 100).toFixed(2); var num3 = "1.345"; document.getElementById('num3').innerHTML = parseFloat(Math.round(num3 * 100) / 100).toFixed(2); 
 span { border: 1px solid #000; margin: 5px; padding: 5px; } 
 <span id="num1"></span> <span id="num2"></span> <span id="num3"></span> 

请注意,它将四舍五入到小数点后1.346 ,因此输入1.346将返回1.35


#27楼

您没有给我们提供全部信息。

当我将javascript:alert(parseFloat(1).toFixed(2))粘贴到位置栏中时,在浏览器中显示1.00。 但是,如果您随后对其进行处理,它将还原。

var num = 2
document.getElementById('spanId').innerHTML=(parseFloat(num).toFixed(2)-1)shows 1 and not 1.00

#28楼

在需要特定格式的地方,您应该编写自己的例程或使用满足您需要的库函数。 ECMAScript的基本功能通常不足以显示带格式的数字。

舍入和格式的完整说明在这里: http : //www.merlyn.demon.co.uk/js-round.htm#RiJ

通常,舍入和格式化仅应在输出之前作为最后一步执行。 较早这样做可能会引入意想不到的大错误并破坏格式。


#29楼

你是这个意思吗?

 function showAsFloat(num, n){ return !isNaN(+num) ? (+num).toFixed(n || 2) : num; } document.querySelector('#result').textContent = [ 'command | result', '-----------------------------------------------', 'showAsFloat(1); | ' + showAsFloat(1), 'showAsFloat(1.314); | ' + showAsFloat(1.314), 'showAsFloat(\\'notanumber\\') | ' + showAsFloat('notanumber'), 'showAsFloat(\\'23.44567\\', 3) | ' + showAsFloat('23.44567', 3), 'showAsFloat(2456198, 5) | ' + showAsFloat('2456198', 5), 'showAsFloat(0); | ' + showAsFloat(0) ].join('\\n'); 
 <pre id="result"></pre> 

格式编号始终显示2个小数位相关推荐

  1. 右边菜单_Excel – 如何始终显示下拉菜单右边的小箭头?

    制作下拉菜单,不是什么高深的技巧,我在各种案例中也经常会用到. 如果要学习多级联动菜单的制作,可参见 Excel indirect 函数(2) – 制作多级联动菜单(文末彩蛋) 最近有同学提出了一个关 ...

  2. html多级列表不连续如何显示,完美解决word多级列表的编号不显示问题

    word 标题 多级列表 显示编号 显示 word多级列表的编号不显示的解决方法 根本原因:本地样式模板中的字体特征损坏了.可能是由于复制了格式混乱的文档中的文字直接粘贴到自己的文档里,破坏了本地样式 ...

  3. oracle将字符串前移,将字符串转换为oracle中的格式编号

    我正在使用Oracle 10g并具有数据库列Q1的数据类型为varchar2的数据库.该列主要保存float和int值.将字符串转换为oracle中的格式编号 我想运行一个查询,将获取值,但具有标准美 ...

  4. win10服务器文件夹显示不全,如何让Win10文件夹始终显示功能区有哪些方法

    如何让Win10文件夹始终显示功能区有哪些方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 方法一:借助快速访问工具栏 点开快速访问工具栏菜单,点击取消"最小化功能区"即可. 方法二 ...

  5. matlab数据显示格式,如何使用MATLAB以图形格式记录和显示数据

    图形表示形式总是有助于可视化数据,并且通过查看趋势和模式非常容易.有很多软件可以根据输入值绘制图形,但是在嵌入式系统中,MATLAB是最受欢迎的软件之一,它不仅可以以图形形式显示结果,而且可以轻松地与 ...

  6. ecshop始终显示全部分类

    商品分类树需要始终显示所有类别,默认的Ecshop的显示方式为在当前产品页面只显示当前的产品所在的同级及下级分类,这就导致当点开某个产品或 者子分类的时候全局的分类树就不见了.其实修改的方法很简单.只 ...

  7. RAW图像详解及使用Python读取raw格式图像并显示

    一.RAW图像详解 1.1 什么是raw格式图像? RAW在英文中的解释是未处理的.自然状态的,这也就是RAW文件的真谛.RAW图像就是CMOS或者CCD图像感应器将捕捉到 的光源信号转化为数字信号的 ...

  8. svg上传服务器无法显示,让WordPress支持上传SVG格式图片并显示在媒体库中的方法...

    让WordPress支持上传SVG格式图片并显示在媒体库中的方法 发布时间:2020-12-11 14:18:12 来源:亿速云 阅读:167 作者:小新 这篇文章将为大家详细讲解有关让WordPre ...

  9. 使用Python读取raw格式图像并显示

    整理日期:2020-02-13 整理内容:使用Python读取raw格式图像并显示 代码如下: import cv2 #OpenCV包 import numpy as np# 首先确定原图片的基本信息 ...

最新文章

  1. JSP内置对象基础知识小结
  2. boost::detail::atomic_count相关的测试程序
  3. hihoCoder #1467 : 2-SAT·hihoCoder音乐节
  4. 使用selenium进行密码破解(绕过账号密码JS加密)
  5. Smack 4.3.2 发布,XMPP(jabber) 的 Java 客户端类库
  6. 我的JavaWeb学习2
  7. 小白教程:如何在MAC菜单栏上显示日期和时间
  8. (对拍配套)随机生成数据
  9. Banner本地图片轮播图
  10. 墨刀未能成功读取服务器,墨刀体验小感
  11. Linux内核TC工具链路带宽设计--CBQ队列规定
  12. UVa 12195 - Jingle Composing
  13. (等倾、等厚干涉)MATLAB在迈克尔逊干涉仪中的应用
  14. 我的世界电脑版怎么下载java_我的世界端游java版怎么下载
  15. 读吴晓波《历代经济变革得失》
  16. 网络营销实验一 企业网站专业性诊断评价
  17. apply方法和unapply方法
  18. 以股票weekday和涨幅关系为例创建dataframe交叉表与透视表
  19. 2018年中国对美贸易顺差3233.2亿美元 同比扩大17.2%
  20. 马云为什么救援世界?

热门文章

  1. 监听者模式理解(Swing)
  2. 我教你怎么玩转git
  3. android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  4. activity切换交互动画
  5. 第六周项目四-静态成员应用
  6. EditText(输入框)详解
  7. 【Fragment】onActivityResult
  8. (0033) iOS 开发之Block 的基础用法及注意事项2
  9. 云服务器怎么设置数据库文件,怎么设置云服务器数据库
  10. 布尔类型和三目运算符