【问题标题】:Javascript format a number asin C#Javascript 将数字格式化为 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.. 有谁知道为什么?

【问题讨论】:

标签: javascript html format


【解决方案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";

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2021-05-10
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多