当我做这个类型转换时:
(float) '0.00';
我得到0
。如何获取0.00
并且仍然将数据类型设置为浮点数?
答案 0 :(得分:74)
您没有0
或0.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输出以保持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)
答案 7 :(得分:0)
您可以使用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