Можно ли вернуть значение с плавающей запятой с двумя десятичными разрядами для 0? - PullRequest
0 голосов
/ 11 октября 2018

Я делаю толчок для подачи в Google Analytics и одно из рекомендаций, что цены возвращаются как плавающие, пока что все хорошо.Я решил использовать parseFloat (), однако я должен вернуть два знака после запятой для значений, заканчивающихся на 00. Пример: (100.00 или 208.00).Когда он возвращает значение с плавающей запятой, он удаляет значения, заканчивающиеся на 0.

var product_price = «100.00»;value = parseFloat (product_price);

Результат с float = 100

Я использовал метод .toFixed (2), чтобы поместить два десятичных знака, но вернуть как String.

Ну, я уже исследовал в нескольких местах, и все решения, которые я нашел, и те, кого я знаю, вернут строку.Я считаю, что технически это невозможно.Но я хотел бы убедиться, что это действительно невозможно.

Saberiam me dizer se ésiveivel retornar um valor com duas casas decimais para valores de final .00.

Для уточнения возврата parseFloatзначение с точкой плавания, например, 100,99, теперь нет 100,00.

Извините, что написал вопрос на португальском языке раньше.

Спасибо

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Вы смешиваете две вещи: значение числа и способ его отображения.

100, 100.0, 100.00 (или даже 1E2, 10E1, 0.1E3) являются визуальным представлением одного и того же числовое значение .

Я оставлю в стороне тот факт, что числовые значения компьютера не всегда совпадают с действительными числами в математическом смысле.

В JavaScript parseFloat возвращаетnumeric тип.numeric значения отображаются по умолчанию без конечных нулей.То есть, когда вы делаете console.log(100), 100 преобразуется в строку «100», и то же самое относится к console.log(100.00), число также преобразуется в строку ... «100».

Но вы всегда можете указать строковое представление, заставив отображать количество десятичных знаков (это то, что .toFixed() делает).

См .: Номер формата, чтобы всегда отображать 2 десятичных знака

Вы можете просто использовать toFixed(2) для любой привязки numeric (переменной), чтобы достичь желаемого.

let a = 100;
console.log(a.toFixed(2));

Я использовал метод .toFixed (2), чтобы поместить два десятичных знака, но вернулся как String.

Да, нофактически любое число, которое вы пытаетесь отобразить , в какой-то момент является какой-то строкой (подумайте о console.log(100.00)).Внутреннее значение (numeric) для 100 и 100,00 одинаково.

Разница only заключается в их представлении string , поэтому запрашивается способ сделатьчто "без строки" противоречиво.

0 голосов
/ 12 октября 2018
    <!DOCTYPE html>
    <html>
    <title>Web Page Design</title>
    <head>
    <script>
    function sayHello() {
        var num = "100.00";
        var value=parseFloat(num);
        var n = value.toFixed(2);
        alert(n);

    }
    sayHello();
    </script>
    </head>
    <body>
    </body>
    </html>
0 голосов
/ 12 октября 2018

Числовое значение само по себе не имеет понятия десятичных разрядов, пока вы не захотите его напечатать.Для числового типа ничего не значит иметь фиксированные десятичные разряды, если вы не печатаете его.Поэтому десятичные разряды вступают в игру только тогда, когда вы конвертируете число в String.

Когда вы хотите «увидеть» 100.00, вы уже имеете в виду «1005 *», чтобы «увидеть».Вы можете видеть только String и никогда не видеть число.

...