2015-03-12 4 views
2

Я нахожу большую проблему с toFixed (2), то есть если я пишу 5.555, тогда он отобразит 5.55, и если я напишу 5.565, тогда отобразится 5.57. Что мне делать?Проблема в toFixed функции Javascript

Это то, что я делаю. Объявление одного массива и toFixed всех значений первого массива и включение второго массива.

var arr1 = [25.205,25.215,25.225,25.235,25.245,25.255,25.265,25.275,25.285,25.295] 

var arr2 = [] 

for(i=0;i<10;i++){ arr2[i]= +arr1[i].toFixed(2) } 

Результаты:

arr1 = [25.205, 25.215, 25.225, 25.235, 25.245, 25.255, 25.265, 25.275, 25.285, 25.295] 

arr2 = [25.2, 25.21, 25.23, 25.23, 25.25, 25.25, 25.27, 25.27, 25.29, 25.3] 

я должен использовать Math.floor() метод объекта Math для этого.

Math.floor(number*100)/100 
+0

, что выход вы ожидаете .. это еще не проблема –

+0

* Что я должен делать? * Как вы думаете, он должен вернуться? –

+0

У меня есть код. для значений 25.225 и 25.235, после toFixed (2) он дает результат 25.23. –

ответ

0

У меня есть создать функцию, которая делается все для меня ..

function toFixed(number, precision) { 
    var multiplier = Math.pow(10, precision + 1), 
     wholeNumber = Math.floor(number * multiplier); 
    return Math.round(wholeNumber/10) * 10/multiplier; 
} 

//Call this function to retrive exect value 
toFixed((+adjustmentval), 2); 
1

Это связано с тем, что двоичные представления фракций немного больше или меньше введенных чисел. См. Принятый ответ HERE для альтернативного метода округления до 2 значащих цифр.

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