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 12: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 12:45

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

bes 13.07.2014 12:56

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

рони 13.07.2014 13:21

:-?
alert(23.04|0);

bes 13.07.2014 19:04

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

рони 13.07.2014 19: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 19:23

Цитата:

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

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

Boomerml 14.07.2014 16: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 16:16

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

рони 14.07.2014 16: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, время: 03:13.