В скрипте приложений я хочу получить отформатированные строки 'number'. На входе находится неформатированное число. С более ранним ответом, опубликованным @slandau, я подумал, что нашел решение, изменив его код (см. Фрагмент кода). Это работает в codepen, но не когда я использую скрипт приложения.
1. Кто-нибудь знает, что здесь пошло не так?
2. Я заметил, что этот код работает, за исключением ввода числа, заканчивающегося на .0, в этом случае возвращаемое значение также равно .0, но должно быть .00. Я хотел бы помочь исправить это тоже.
Спасибо!
Я пытался найти проблемы приведения типов, но не смог их устранить. Я довольно новичок в кодировании.
function commaFormatted(amount)
{
var delimiter = ","; // replace comma if desired
var a = amount.split('.', 2);
var preD = a[1]/(Math.pow(10,a[1].length-2));
var d = Math.round(preD);
var i = parseInt(a[0]);
if(isNaN(i)) { return ''; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3)
{
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) { a.unshift(n); }
n = a.join(delimiter);
if(d.length < 1) { amount = n; }
else { amount = n + '.' + d; }
amount = minus + amount;
return amount;
}
console.log(commaFormatted('100000.3532'))
Ожидаемый результат будет 100 000,35.
Я получаю это в IDE codepen, но в GAS IDE останавливается на метод .split () => не функция. При преобразовании var a в строку = я не получаю ["100000", "3532"] при ведении журнала var a. Вместо этого я получаю 100000 и ожидал 3532.