Как разобрать float с двумя десятичными знаками в javascript?
У меня есть следующий код. Я хотел бы иметь его таким, что если price_result равен целому числу, скажем 10, то я хотел бы добавить два десятичных знака. Так что 10 будет в 10.00.
Или если он равен 10.6 будет 10.60. Не знаю, как это сделать.
price_result = parseFloat(test_var.split('$')[1].slice(0,-1));
12 ответов:
можно использовать toFixed() для этого
var twoPlacedFloat = parseFloat(yourString).toFixed(2)
при использовании
toFixed, Она всегда возвращает значение в виде строки. Это иногда усложняет код. Чтобы избежать этого, вы можете сделать альтернативный метод для числа.Number.prototype.round = function(p) { p = p || 10; return parseFloat( this.toFixed(p) ); };и использовать:
var n = 22 / 7; // 3.142857142857143 n.round(3); // 3.143или просто:
(22/7).round(3); // 3.143
Если вам нужна производительность (как в играх):
Math.round(number * 100) / 100Это примерно в 100 раз быстрее, чем parseFloat(количество.toFixed(2))
чтобы вернуть число, добавьте еще один слой скобок. Держит его в чистоте.
var twoPlacedFloat = parseFloat((10.02745).toFixed(2));
Если ваша цель состоит в том, чтобы разобрать, и ваш ввод может быть литералом, то вы ожидаете
floatиtoFixedне будет предоставлять это, так что вот две простые функции, чтобы обеспечить это:function parseFloat2Decimals(value) { return parseFloat(parseFloat(value).toFixed(2)); } function parseFloat2Decimals(value,decimalPlaces) { return parseFloat(parseFloat(value).toFixed(decimalPlaces)); }
подшить от лодашь это, пожалуй, лучший
_.ceil("315.9250488",2) _.ceil(315.9250488,2) _.ceil(undefined,2) _.ceil(null,2) _.ceil("",2)будет работать также с номером и безопасно
попробуйте это (см. комментарии в коде):
function fixInteger(el) { // this is element's value selector, you should use your own value = $(el).val(); if (value == '') { value = 0; } newValue = parseInt(value); // if new value is Nan (when input is a string with no integers in it) if (isNaN(newValue)) { value = 0; newValue = parseInt(value); } // apply new value to element $(el).val(newValue); } function fixPrice(el) { // this is element's value selector, you should use your own value = $(el).val(); if (value == '') { value = 0; } newValue = parseFloat(value.replace(',', '.')).toFixed(2); // if new value is Nan (when input is a string with no integers in it) if (isNaN(newValue)) { value = 0; newValue = parseFloat(value).toFixed(2); } // apply new value to element $(el).val(newValue); }
пожалуйста, используйте функцию ниже, если вы не хотите округлять.
function ConvertToDecimal(num) { num = num.toString(); //If it's not already a String num = num.slice(0, (num.indexOf(".")) + 3); //With 3 exposing the hundredths place alert('M : ' + Number(num)); //If you need it back as a Number }
для чего это стоит: десятичное число, это десятичное число, вы либо округляете его до какого-то другого значения или нет. Внутренне он будет приближаться к десятичной дроби в соответствии с правилом артметики и обработки с плавающей запятой. Он остается десятичным числом (с плавающей запятой, в JS двойной) внутренне, независимо от того, сколько цифр вы хотите отобразить его.
чтобы представить его для отображения, вы можете выбрать точность отображения на все, что вы хотите с помощью преобразования строк. Презентация-это проблема отображения, а не хранения.
простая строка javascript для float
var it_price = chief_double($("#ContentPlaceHolder1_txt_it_price").val()); function chief_double(num){ var n = parseFloat(num); if (isNaN(n)) { return "0"; } else { return parseFloat(num); } }
у меня есть другое решение.
можно использовать
round()чтобы сделать это вместоtoFixed()var twoPlacedFloat = parseFloat(yourString).round(2)
Comments