Добавить десятичную строку - PullRequest
3 голосов
/ 22 августа 2011

У меня есть скрипт, который принимает большое число и считает. Сценарий преобразует число в строку, чтобы его можно было отформатировать запятыми, но мне также нужно добавить десятичное место перед последними двумя цифрами. Я знаю, что эта строка обрабатывает запятые:

if ((i+1) % 3 == 0 && (amount.length-1) !== i)output = ',' + output;

Есть ли аналогичная строка кода, которую я могу добавить, которая завершает добавление десятичной точки?

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Да, если вы всегда хотите десятичную дробь перед двумя последними:

function numberIt(str) {
    //number before the decimal point
    num = str.substring(0,str.length-3);
    //number after the decimal point
    dec = str.substring(str.length-2,str.length-1)
    //connect both parts while comma-ing the first half
    output = commaFunc(num) + "." + dec;

    return output;
}

Когда commaFunc() - это описанная вами функция, которая добавляет запятые.

EDIT

После большой кропотливой работы полный правильный код:

http://jsfiddle.net/nayish/TT8BH/21/

0 голосов
/ 22 августа 2011

Вы уверены, что хотите, чтобы десятичное число было перед двумя последними цифрами?Таким образом, 1234 станет 12.34, а не 1234.00, я предполагаю, что вам нужен второй, в этом случае вам следует использовать встроенный метод JavaScript .toFixed ()

Примечание Я не писал функцию format_number, я взял ее с сайта ниже и немного ее изменил.

http://www.mredkj.com/javascript/nfbasic2.html

http://www.mredkj.com/javascript/nfbasic.html

// example 1
var num = 10;
var output = num.toFixed(2); // output = 10.00

// example 2, if you want commas aswell
function format_number(nStr)
{
    nStr = nStr.toFixed(2);
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

var num = 1234;
var output = format_number(num); // output = 1,234.00
...