我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
当前回答
刚刚遇到了这个最长的线程,下面是我的解决方案:
parseFloat(Math.round((parseFloat(num * 100)).toFixed(2)) / 100 ).toFixed(2)
如果有人能找到漏洞就告诉我
其他回答
你是这个意思吗?
@razu提供的答案是最好的。这是一个稍微重构的版本。
代码片段仍然不能返回类似showAsFloat(2.3346)的正确值(结果2.33,但应该是2.34)。所以,也看。
const showAsFloat = (input, decimals = 2, asString = false) => { if (input === null || input.constructor === Boolean || isNaN(+input)) { return input; } const converted = +( `${Math.round( parseFloat( `${input}e${decimals}` ) )}e-${decimals}` ); return asString ? converted.toFixed(decimals) : converted }; document.querySelector('#result').textContent = [ 'command | result', '-----------------------------------------------', 'showAsFloat(1); | ' + showAsFloat(1), 'showAsFloat(1.314); | ' + showAsFloat(1.314), 'showAsFloat(\'notanumber\') | ' + showAsFloat('notanumber'), 'showAsFloat(\'23.44567\', 3) | ' + showAsFloat('23.44567', 3), 'showAsFloat(2456198, 5, true)| ' + showAsFloat('24568', 5, true), 'showAsFloat(2456198, 5) | ' + showAsFloat('24568', 5), 'showAsFloat(0, 2, true); | ' + showAsFloat(0, 2, true), 'showAsFloat(1.345); | ' + showAsFloat(1.345), 'showAsFloat(0.005); | ' + showAsFloat(0.005), 'showAsFloat(null); | ' + showAsFloat(null), ].join('\n'); <pre id="result"></pre>
Number(1).toFixed(2); // 1.00
Number(1.341).toFixed(2); // 1.34
Number(1.345).toFixed(2); // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
. getelementbyid(“line1”)。innerHTML = Number(1).toFixed(2); . getelementbyid(么)。innerHTML = Number(1.341).toFixed(2); . getelementbyid(“line3”)。innerHTML = Number(1.345).toFixed(2); . getelementbyid(“line4”)。innerHTML = Number(1.3450001).toFixed(2); < span id = " line1 " > < / span > < br / > < span id = "么" > < / span > < br / > < span id = " line3 " > < / span > < br / > < span id = " line4 " > < / span >
function formatValeurDecimal(valeurAFormate,longueurPartieEntier,longueurPartieDecimal){
valeurAFormate = valeurAFormate.replace(",",".")
valeurAFormate = parseFloat(valeurAFormate).toFixed(longueurPartieDecimal)
if(valeurAFormate == 'NaN'){
return 0
}
//____________________valeurPartieEntier__________________________________
var valeurPartieEntier = valeurAFormate | 0
var strValeur = valeurPartieEntier.toString()
strValeur = strValeur.substring(0, longueurPartieEntier)
valeurPartieEntier = strValeur
//____________________valeurPartieDecimal__________________________________
strValeur = valeurAFormate
strValeur = strValeur.substring(strValeur.indexOf('.')+1)
var valeurPartieDecimal = strValeur
valeurAFormate = valeurPartieEntier +'.'+valeurPartieDecimal
if(valeurAFormate == null){
valeurAFormate = 0
}
return valeurAFormate
}
简单的回答是:
var num = 1.2353453;
num.toFixed(2); // 1.24
例如:http://jsfiddle.net/E2XU7/
好消息! ! 似乎javascript的新版本ES2020(我只是使用)提供了这个函数的新行为。
let ff:number =3
console.info(ff.toFixed(2)) //3.00
根据需要。