Подтвердить что ты не робот

PHP float с 2 десятичными знаками:.00

Когда я делаю это приведение типов:

(float) '0.00';

Я получаю 0. Как я могу получить 0.00 и все еще иметь тип данных как float?

4b9b3361

Ответ 1

Число с плавающей точкой не имеет 0 или 0.00: это разные строковые представления внутреннего двоичного формата (IEEE754), но число с плавающей точкой одинаково.

Если вы хотите выразить ваш float как "0.00", вам нужно отформатировать его в строку, используя number_format:

$numberAsString = number_format($numberAsFloat, 2);

Ответ 2

Насколько я знаю, для решения этой проблемы нет решения для PHP. Все остальные (выше и ниже) ответы, приведенные в этом потоке, носят бред.

Функция number_format возвращает строку как результат, написанную в собственной спецификации PHP.net.

Такие функции, как floatval/doubleval, возвращают целые числа, если вы даете значение 3.00.

Если вы набираете текст, вы получите целое число как результат.

Если вы используете round(), вы получите целое число как результат.

Единственное возможное решение, о котором я могу думать, - использовать вашу базу данных для преобразования типов в float. MySQL, например:

SELECT CAST('3.00' AS DECIMAL) AS realFloatValue;

Выполните это, используя слой абстракции, который возвращает float вместо строк и там вы идете.


Выходная мощность JSON

Если вы ищете решение для исправления вывода JSON для хранения 2 десятичных знаков, вы, вероятно, можете использовать пост-форматирование, как в приведенном ниже коде:

// PHP AJAX Controller

// some code here

// transform to json and then convert string to float with 2 decimals
$output = array('x' => 'y', 'price' => '0.00');
$json = json_encode($output);
$json = str_replace('"price":"'.$output['price'].'"', '"price":'.$output['price'].'', $json);

// output to browser / client
print $json;
exit();

Возврат к клиенту/браузеру:

{"x":"y","price":0.00}

Ответ 3

На самом деле 0,00 - это 0. Если вам нужно иметь 0,00, когда вы используете эхо, просто используйте number_format следующим образом:

number_format($number, 2);

Ответ 4

Используйте функцию number_format(), чтобы изменить способ отображения номера. Он вернет a string, тип исходной переменной не изменяется.

Ответ 5

вы можете попробовать это, он будет работать для вас

number_format(0.00, 2)

Ответ 6

Вы можете отображать числа с плавающей запятой

  • с определенным количеством десятичных знаков
  • с определенным форматом (локализованным)

то есть.

$myNonFormatedFloat = 5678.9

$myGermanNumber = number_format($myNonFormatedFloat, 2, ',', '.'); // -> 5.678,90

$myAngloSaxonianNumber = number_format($myNonFormatedFloat, 2, '.', ','); // -> 5,678.90 

Обратите внимание, что

1-й аргумент - это номер с плавающей точкой, который вы хотели бы отформатировать

Второй аргумент - это число десятичных знаков

Третий аргумент - это символ, используемый для визуального разделения десятичных знаков

4-й аргумент - это символ, используемый для визуального разделения тысяч

Ответ 7

Вы можете использовать эту простую функцию

number_format($amount, 2, '.', '');

Английская нотация без разделителя тысяч.

см. PHP: number_format - Руководство

Ответ 8

Вы можете использовать floatval()

floatval()

Ответ 9

Вы можете использовать круглую функцию

round("10.221",2);

Вернет 10.22

Ответ 10

попробуй это

$result = number_format($FloatNumber, 2);

Ответ 11

Вы можете использовать эту простую функцию. number_format()

    $num = 2214.56;

    // default english notation
    $english_format = number_format($num);
    // 2,215

    // French notation
    $format_francais = number_format($num, 2, ',', ' ');
    // 2 214,56

    $num1 = 2234.5688;

   // English notation with thousands separator
    $english_format_number = number_format($num1,2);
    // 2,234.57

    // english notation without thousands separator
    $english_format_number2 = number_format($num1, 2, '.', '');
    // 2234.57