flyttal - JavaScript som visar ett flyttal med 2 decimaler
Jag ville visa ett nummer med två decimaler.
Jag trodde att jag kunde använda toPrecision(2) i JavaScript.
Men om numret är 0.05, får jag 0.0500. Jag skulle föredra att det förblir samma.
Se det på JSbin.
Vad är det bästa sättet att göra detta?
Jag kan tänka mig att koda några lösningar, men jag föreställer mig (hoppas) att något liknande redan är inbyggt?
Svar #1
float_num.toFixed(2);
Obs:toFixed() kommer att avrunda eller fylla med nollor vid behov för att uppnå den angivna längden.
Svar #2
Du kan göra det med toFixed-funktionen, men den är buggig i IE. Om du vill ha en pålitlig lösning, titta på mitt svar här.
Svar #3
med toFixed kan du sätta antalet decimaler på detta sätt:
let number = 6.1234
number.toFixed(2) // '6.12'
men toFixed returnerar en sträng och även om number inte har någon decimalpunkt alls kommer det att lägga till onödiga nollor.
let number = 6
number.toFixed(2) // '6.00'
För att undvika detta måste du konvertera resultatet till ett nummer. Du kan göra detta med dessa två metoder:
let number1 = 6
let number2 = 6.1234
// method 1
parseFloat(number1.toFixed(2)) // 6
parseFloat(number2.toFixed(2)) // 6.12
// method 2
+number1.toFixed(2) // 6
+number2.toFixed(2) // 6.12
Svar #4
number.parseFloat(2) fungerar men det returnerar en sträng.
Om du vill bevara det som en nummer-typ kan du använda:
Math.round(number * 100) / 100Svar #5
Vet inte hur jag hamnade på den här frågan, men även om det har gått många år sedan detta har frågats, skulle jag vilja lägga till en snabb och enkel metod som jag följer och den har aldrig svikit mig:
var num = response_from_a_function_or_something();
var fixedNum = parseFloat(num).toFixed( 2 );
Svar #6
Prova toFixed istället för toPrecision.
Svar #7
function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }
round(1.005, 2);/returnera 1.01
round(1.004, 2);/returnera 1 istället för 1,00
Svaret finns på följande länk: http://www.jacklmoore.com/notes/rounding-in-javascript/
Svar #8
Jag använde detta sätt om du behöver 2 siffror och inte strängtyp.
const exFloat = 3.14159265359;
console.log(parseFloat(exFloat.toFixed(2)));
