Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2014, 13:28
tai tai вне форума
Аспирант
Отправить личное сообщение для tai Посмотреть профиль Найти все сообщения от tai
 
Регистрация: 16.01.2013
Сообщений: 98

Округление 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
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2014, 13:45
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

alert( (10).toFixed(1).replace(/\.0+$/, "") );
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2014, 13:56
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

alert(23.04.toFixed(1));
alert(+23.04.toFixed(1));
alert(+23.05.toFixed(1));
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2014, 14:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103


alert(23.04|0);
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2014, 20:04
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

рони, если я правильно понял тс, то
alert(23.04.toFixed(1)|0);//23
alert(23.05.toFixed(1)|0);//23, а хотим 23.1
Ответить с цитированием
  #6 (permalink)  
Старый 13.07.2014, 20:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

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);

Последний раз редактировалось рони, 13.07.2014 в 20:19.
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2014, 20:23
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от рони
это сбивает в данном случае так и останется 10.1 а не 10.0
да, я тоже заметил, я додумал, что тс хотел написать 10.01
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2014, 17:03
Аватар для Boomerml
Аспирант
Отправить личное сообщение для Boomerml Посмотреть профиль Найти все сообщения от Boomerml
 
Регистрация: 04.12.2013
Сообщений: 31

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

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

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) Но кажется что есть деликатнее вариант?
Ответить с цитированием
  #9 (permalink)  
Старый 14.07.2014, 17:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Boomerml, читай тему, в учебнике тоже есть
Ответить с цитированием
  #10 (permalink)  
Старый 14.07.2014, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Boomerml,

var vl = '2.02222225';
    alert([typeof +(+vl).toFixed(2),+(+vl).toFixed(2)]);
    alert([typeof ((vl*100|0)/100),(vl*100|0)/100]);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление в JQuery. Подскажите reddiamond jQuery 3 20.11.2013 00:19
Применение toFixed для определенной функции. djonA Общие вопросы Javascript 3 03.05.2012 15:49
Опять про округление чисел Kefir Общие вопросы Javascript 3 10.01.2012 15:34
Как убрать округление bookman Events/DOM/Window 4 02.08.2011 00:30
Корректное округление вещественных чисел Бобр Общие вопросы Javascript 16 14.01.2009 18:21