Javascript 将数字格式化为 C#
Posted
技术标签:
【中文标题】Javascript 将数字格式化为 C#【英文标题】:Javascript format a number asin C# 【发布时间】:2011-05-31 07:05:17 【问题描述】:我有一个数字,目前是 1,657,108,700 并且还在增长。但是我希望它显示为 1,657,108k
javascript 或 html 是否有内置函数来执行此操作?
该值正在通过 javascript 设置为 html 中的 span 字段。
[编辑]
从评论中我得到了我的方法:
var start = '1,657,108,700';
start = (start / 1000).toFixed(0);
var finish = '';
while (start.length > 3)
finish = ','.concat(start.substring(start.length - 3, 3), finish);
start = start.substring(0, start.length - 3);
;
finish = start + finish + "k";
return finish;
但是这会返回 1,65,7k 而不是 1,657,108k.. 有谁知道为什么?
【问题讨论】:
可能重复:***.com/questions/2134161/… , ***.com/questions/3177855/… @Andrei Sfat:这绝不是它们中的任何一个的重复。第一个是 C#,我的问题是关于 javascript。第二种方法为我返回 NaNk。 没有我知道的功能,但实现起来很简单。只需除以 1000,执行 Math.floor(或取整),然后在其上附加一个“k”。 这个链接怎么样? :***.com/questions/2685911/… @Andrei Sfat:谢谢,但这也无济于事。 【参考方案1】:var formattedNumber = Math.round(yourNumber / 1000).toLocaleString() + "k";
把上面的变成一个函数或不适当。我不知道有一个函数可以做到这一点,或者不知道有一种方法可以满足“k”的非英语版本(假设有一些),但至少 toLocaleString()
应该注意逗号而不是句号数以千计的问题。
更新:我在没有测试的情况下发布了上面的内容;当我尝试它时,我发现 toLocaleString() 将 1234 格式化为 1,234.00。我曾想过通过使用正则表达式替换来删除尾随零来修复它,当然我不能确定 toLocaleString() 将使用什么字符作为小数点,所以这不起作用。我想您可以编写一些代码,在“控制”数字(例如 1.1)上使用 toLocaleString(),以在运行时查看它使用什么字符来表示小数。
更新 2 为您更新的问题,手动插入逗号,我是这样做的:
var unformattedNumber = 123456;
var a = unformattedNumber.toString().split("");
for (var i=a.length-3; i >0; i-=3)
a.splice(i,0,",");
var formattedNumber = a.join("") + "k";
【讨论】:
以上是关于Javascript 将数字格式化为 C#的主要内容,如果未能解决你的问题,请参考以下文章
在 JavaScript 中将十六进制数字格式化为短 UUID