Nie wiem, czy jestem brakuje czegoś oczywiste tutaj, ale ...Firefox i JavaScript zasady zaokrąglania
w IE, Opera i Chrome, dostaję to, czego oczekuję od zaokrąglania liczb kończących się na 5:
125 toPrecision(2) => 130
11.5 toPrecision(2) => 12
Tego właśnie się spodziewałam.
Firefox, choć jest trochę bardziej „wyrafinowane” uzyskując następujące:
125 toPrecision(2) => 120 //wtf!!!
11.5 toPrecision(2) => 12
Po nieco głowę zarysowania, doszedłem do wniosku, że Firefox jest przy pomocy „zaokrąglania nawet” regułę gdzie, jeśli cyfra przed 5 jest nawet liczba rund w dół i jeśli cyfra przed 5 jest nieparzysta liczba rund:
0.5 => 0
1.5 => 2
2.5 => 2
3.5 => 4, etc.
Używam zaokrąglone wyniki przetestować rozwiązania studentowi pytania inżynierskich z pseudo -nie generowane pytania wejściowe. Wprowadzanie pytania w Chrome może wynosić h = 1020 mm, ale h = 1030 mm w FF, Chrome lub Opera.
Potrzebuję funkcji, aby zaokrąglenie było spójne, tj. Chcę, aby 0,00zaokrąglało do 0,000124 i chcę 1234 zaokrąglić do 1240, więc nie mogę użyć prostej liczby = Math.floor (liczba + 0,5); Aby skomplikować sprawy trochę, chcę zmienne wejściowe i odpowiedzi studentów za prawidłowe do 3 sig wykopalisk chyba pierwsza cyfra to 1, w tym przypadku chcę 4 sig wykopuje:
234.5 => 235
134.5 => 134.5
Mam hacked rozwiązanie do 3 lub 4-znakowych cyfr w zależności od pierwszej cyfry poprzez konwersję liczby na ciąg i testowanie pierwszego niezerowego, nieczytelnego punktu i nieujemnego znaku dla "1" - nie jest ładny, ale działa. Mógłbym zrobić coś podobnego do problemu zaokrąglania, sprawdzając, czy cyfra, która ma zostać zaokrąglona, wynosi 5, ale zastanawiam się, czy istnieje eleganckie rozwiązanie oparte na bitach.
"Chcę 1234 zaokrąglić do 1240"? –