在JavaScript中,如何编写一个函数将给定的[编辑:正整数 ]数字(低于1000亿)转换为3个字母的缩写 - 其中0-9和az/AZ计为字母,但是点(因为它在许多比例字体中如此微小)不会,并且在字母限制方面会被忽略?
这个问题与这个有用的线程有关,但它不一样; 例如,那个函数将转向例如"123456 - > 1.23k"("123.5k"是5个字母)我正在寻找做"123456 - > 0.1m"("0 [.] 1m"为3个字母的东西).例如,这将是希望函数的输出(左原始,右理想返回值):
0 "0"
12 "12"
123 "123"
1234 "1.2k"
12345 "12k"
123456 "0.1m"
1234567 "1.2m"
12345678 "12m"
123456789 "0.1b"
1234567899 "1.2b"
12345678999 "12b"
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:谢谢!在做出以下修改时,答案在于并按照要求运作:
function abbreviateNumber(value) {
var newValue = value;
if (value >= 1000) {
var suffixes = ["", "k", "m", "b","t"];
var suffixNum = Math.floor( (""+value).length/3 );
var shortValue = '';
for (var precision = 2; precision >= 1; precision--) { …Run Code Online (Sandbox Code Playgroud) 我试图用python将数字打印成工程格式,但我似乎无法让它工作.语法SEEMS足够简单,但它不起作用.
>>> import decimal
>>> x = decimal.Decimal(1000000)
>>> print x
1000000
>>>> print x.to_eng_string()
1000000
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样.这两个值不相等(一个是字符串,另一个是int).设置各种上下文decimal似乎也没有帮助.任何线索或想法?
numbers ×2
python ×2
.net ×1
c# ×1
decimal ×1
formatting ×1
javascript ×1
math ×1
python-2.7 ×1
string ×1