PHP浮点数为2位小数:.00

时间:2012-10-03 10:24:35

标签: php

当我做这个类型转换时:

(float) '0.00';

我得到0。如何获取0.00并且仍然将数据类型设置为浮点数?

12 个答案:

答案 0 :(得分:74)

您没有00.00:这些是内部(IEEE754)二进制格式的不同表示。

如果您想将浮动表示为“0.00”,则需要使用number_format将其格式化为字符串:

$numberAsString = number_format($numberAsFloat, 2);

答案 1 :(得分:7)

据我所知,PHP没有解决方案。在这个帖子中给出的所有其他(上面和下面)答案都是无稽之谈。

number_format函数返回一个字符串,其结果与PHP.net自己的规范中所述相同。

如果给出值3.00。

,则像floatval / doubleval这样的函数会返回整数

如果你打字,那么你会得到一个整数。

如果你使用round(),那么你将得到一个整数。

我能想到的唯一可能的解决方案是使用您的数据库进行类型转换浮动。 MySQL例如:

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

使用抽象层执行此操作,该抽象层返回浮点数而不是字符串,然后就可以了。


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}

答案 2 :(得分:5)

0.00实际为0.如果您在回音时需要0.00,只需使用number_format这样:

number_format($number, 2);

答案 3 :(得分:2)

使用number_format()功能更改号码的显示方式。它将返回string,原始变量的类型不受影响。

答案 4 :(得分:2)

你可以尝试这个,它会适合你

number_format(0.00, 2)

答案 5 :(得分:2)

您可以显示浮点数

  • 有一定数量的小数
  • 以某种格式(本地化)

即。

$myNonFormatedFloat = 5678.9

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

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

请注意,

第一个参数是您要格式化的浮点数

第二个参数是小数位数

第三个参数是用于在视觉上分隔小数的字符

第四个参数是用于在视觉上分离数千个

的字符

答案 6 :(得分:1)

您可以使用这个简单的功能

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

没有千位分隔符的英文符号。

请参阅PHP: number_format - Manual

答案 7 :(得分:0)

您可以使用floatval()

floatval()

答案 8 :(得分:0)

您可以使用圆形功能

round("10.221",2);

将返回10.22

答案 9 :(得分:0)

尝试

$result = number_format($FloatNumber, 2);

答案 10 :(得分:0)

试试这个

$nom="5695.5";
number_format((float)($nom), 2, '.', ','); // -> 5,695.50

$nom="5695.5215";
number_format((float)($nom), 2, '.', ','); // -> 5,695.52

$nom="5695.12";
number_format((float)($nom), 0, '.', ','); // -> 5,695

答案 11 :(得分:-1)

您可以使用此简单功能。     数字格式()

    $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