Adakah yang bisa memberi saya gambaran bagaimana saya bisa membulatkan angka ke 0,5 terdekat.
Saya harus menskalakan elemen di halaman web sesuai dengan resolusi layar dan untuk itu saya hanya dapat menetapkan ukuran font dalam poin ke 1, 1.5 atau 2 dan seterusnya, dll.
Jika saya membulatkannya menjadi 1 tempat desimal atau tidak ada. Bagaimana saya bisa menyelesaikan pekerjaan ini?
javascript
Johnydep
sumber
sumber
roundHalf(15.27)
mengembalikan 15,5Berikut solusi yang lebih umum yang mungkin berguna bagi Anda:
function round(value, step) { step || (step = 1.0); var inv = 1.0 / step; return Math.round(value * inv) / inv; }
round(2.74, 0.1)
= 2.7round(2.74, 0.25)
= 2.75round(2.74, 0.5)
= 2.5round(2.74, 1.0)
= 3,0sumber
inv
maksudnya Apa yanginv
diwakili oleh variabel?inverse
.Untuk memperluas jawaban teratas dengan newtron untuk pembulatan lebih dari 0,5
function roundByNum(num, rounder) { var multiplier = 1/(rounder||0.5); return Math.round(num*multiplier)/multiplier; } console.log(roundByNum(74.67)); //expected output 74.5 console.log(roundByNum(74.67, 0.25)); //expected output 74.75 console.log(roundByNum(74.67, 4)); //expected output 76
sumber
Math.round(-0.5)
mengembalikan 0 , tetapi harus -1 sesuai dengan aturan matematika.Info selengkapnya : Math.round () dan Number.prototype.toFixed ()
function round(number) { var value = (number * 2).toFixed() / 2; return value; }
sumber
round
ke bilangan bulat berikutnya lebih besar dari nilai yang diberikan, yang dalam hal bilangan negatif akan mengarah ke spektrum bilangan bulat positif. -2,5 akan menjadi -2. Apakah itu benar?Math.ceil(-1.75) == -1
danMath.floor(-1.75) == -2
. Jadi bagi siapa pun yang tersandung oleh ini, anggap saja sebagaiceil
pengembalian yang lebih besar dari angka,floor
mengembalikan kurang dari angka.Hanya versi yang dipreteli dari semua jawaban di atas:
Math.round(valueToRound / 0.5) * 0.5;
Umum:
sumber
function roundToTheHalfDollar(inputValue){ var percentile = Math.round((Math.round(inputValue*Math.pow(10,2))/Math.pow(10,2)-parseFloat(Math.trunc(inputValue)))*100) var outputValue = (0.5 * (percentile >= 25 ? 1 : 0)) + (0.5 * (percentile >= 75 ? 1 : 0)) return Math.trunc(inputValue) + outputValue }
Saya menulis ini sebelum melihat respon Tunaki yang lebih baik;)
sumber
var f = 2.6; var v = Math.floor(f) + ( Math.round( (f - Math.floor(f)) ) ? 0.5 : 0.0 );
sumber