Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Округление toFixed (https://javascript.ru/forum/misc/48695-okruglenie-tofixed.html)

tai 13.07.2014 13:28

Округление toFixed
 
Добрый день!

Для округления использую toFixed. Как можно сделать так, чтобы если при округлении получилось целое число, то выводить его без десятичных знаков?

Т.е. например для числа 10.1 toFixed(1) выводит 10.0, а нужно чтобы выводило 10

Делал так
var resultat_2 = resultat_2.toFixed(1); // округлим
        var num_last_sim = resultat_2.length-1; // получим номер последнего символа
        var val_last_sim = resultat_2.charAt(num_last_sim); // получим последний символ
        if(val_last_sim==0){
            //var resultat_2 = resultat_2.toFixed(0); // округлим (значение без 0)
            //$('#ch_discount').val(resultat_2.slice(-1));
            var str = resultat_2.substring(0, str.length - 1);
            alert(str);
        }
        else{
            $('#ch_discount').val(resultat_2);
        }


Ни с помощью slice, ни с substring реализовать не получилось. Если число целое, то просто ничего не выводится, если десятичное - то срабатывает код в else

Sweet 13.07.2014 13:45

alert( (10).toFixed(1).replace(/\.0+$/, "") );

bes 13.07.2014 13:56

alert(23.04.toFixed(1));
alert(+23.04.toFixed(1));
alert(+23.05.toFixed(1));

рони 13.07.2014 14:21

:-?
alert(23.04|0);

bes 13.07.2014 20:04

рони, если я правильно понял тс, то
alert(23.04.toFixed(1)|0);//23
alert(23.05.toFixed(1)|0);//23, а хотим 23.1

рони 13.07.2014 20:15

bes,
Цитата:

Сообщение от tai
например для числа 10.1 toFixed(1) выводит 10.0

это сбивает в данном случае так и останется 10.1 а не 10.0 -- если конечно нужны без точки только когда целые делать через |0 неверно.
вариант )))
alert(10.0.toFixed(1)*10/10);
alert(10.1.toFixed(1)*10/10);

bes 13.07.2014 20:23

Цитата:

Сообщение от рони
это сбивает в данном случае так и останется 10.1 а не 10.0

да, я тоже заметил, я додумал, что тс хотел написать 10.01 :)

Boomerml 14.07.2014 17:03

Здравствуй, рони

можешь подсказать? или может кто сможет?

var vl = '2.02222225';// string
//var result1 = vl.toFixed(2);// Так нельзя как я понял нужен number ну переобразовать в число

//alert( typeof(result1) );// error: vl.toFixed is not a function

var result2 = parseFloat(vl).toFixed(2);// string
var result3 = parseFloat( parseFloat(vl).toFixed(2) );// number

alert( typeof(result2)+' = '+result2 );
alert( typeof(result3)+' = '+result3 );


На выходе нужен number для других расчетов, пока нашёл такое решение(см. result3) Но кажется что есть деликатнее вариант?

bes 14.07.2014 17:16

Boomerml, читай тему, в учебнике тоже есть

рони 14.07.2014 17:35

Boomerml,
:-?
var vl = '2.02222225';
    alert([typeof +(+vl).toFixed(2),+(+vl).toFixed(2)]);
    alert([typeof ((vl*100|0)/100),(vl*100|0)/100]);


Часовой пояс GMT +3, время: 17:54.