2016-04-04 2 views
0

У меня проблема. Скрипт синтаксического анализа csv в html. Но число читается как строка. Как я могу добавить «0» к номерам, которые не имеют десятичных знаков. Например:Как добавить некоторое число в строку в javascript или jquery

15,45 
12,00 
14,2 
14,54 

Я хочу добавить 0 на все номера, как 4,2

15,45 
12,00 
14,20 
14,54 
+0

'12,00' отличается от' 12.00' Что вы ожидаете именно? –

+0

Возможный дубликат [Как создать значение Zerofilled с помощью JavaScript?] (Http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript) – Farside

ответ

2

Попробуйте

var output = "15,2".split(",").map(function(val){ return val > 100 ? val: (val+"00").slice(0,2);}).join(","); 
 
alert(output); 
 
var output = "15,100".split(",").map(function(val){ return val > 99 ? val: (val+"00").slice(0,2);}).join(","); 
 
alert(output); 
 
var output = "15,".split(",").map(function(val){ return val > 100 ? val: (val+"00").slice(0,2);}).join(","); 
 
alert(output);

+0

it doesn 't работает для целых чисел (например, '15') – fcalderan

+0

@fcalderan для' 15,15' выводил мне '15,15', что должно быть результатом в этом случае? – gurvinder372

+0

попробуйте с '15', должно выводить' 15.00' – fcalderan

2

В vanillaJS

var num = "14,2"; 

/* string to number conversion */ 
num = +(num.replace(',','.')); 

/* set 2 digits after decimal point */ 
num = num.toFixed(2); 

/* 
Input Output 
-------------- 
14,25 14.25 
14,2 14.20 
14  14.00 */ 

Снижение в одном операторе, как это было предложено в комментариях ниже:

(+num.replace(',','.')).toFixed(2); 

если у вас есть массив строк, вы можете легко конвертировать их с помощью Array.map()

var nums = ["14", "14,2", "14,25"]; 
nums = nums.map(n => (+n.replace(',','.')).toFixed(2)); 

// => ["14.00", "14.20", "14.25"] 
+0

Это самый правильный и самый результативный ответ. Возможно, соревнуйтесь с однострочками и напишите так: '(+ num.replace (',', '.')). ToFixed (2);'? – A1rPun

+0

да, но для ясности я разделил код на две читаемые (и прокомментированные) строки, я не делаю конкурс codegolf :) – fcalderan

1

Если вы получаете все строки, как опубликованный формат в OP, вы могли бы использовать длину:

["15,45","12,00","14,2"].forEach(function(v){ 
 
    alert(v.split(',')[1].length==1?v+"0":v); 
 
})

0

Вы можете использовать это:

var arr = ["15,45","12,00","14,2","14,54"]; 
 

 
var newarr = arr.map(function(o){ 
 
    var val = o.split(','); 
 
    return val[1].length == 1 ? val.join(',')+"0" : val.join(','); 
 
}); 
 

 
document.querySelector('pre').innerHTML = JSON.stringify(newarr, 0, 4);
<pre></pre>

Смежные вопросы