在 PHP 中将字符串转换为双精度

Posted

技术标签:

【中文标题】在 PHP 中将字符串转换为双精度【英文标题】:Converting String to a double in PHP 【发布时间】:2013-07-10 16:19:02 【问题描述】:

我需要转换一个字符串,比如 37152548 到 371525,48 或 371525.48 我正在尝试 number_format()floatval() 但不成功。

$var = '37152548';

$var = number_format($var, 2);

echo $var; // output 37,152,548.00

【问题讨论】:

尝试除以 100 :) 你的意思是$var/100 number_format 返回一个字符串。 floatval 工作正常;它返回您给它的值的float究竟你想做什么? 这个字符串来自一个导入文件,我需要用它做计算。 【参考方案1】:

你可以试试

$var = '37152548';
echo number_format($var / 100, 2, ".", "");

输出

371525.48 

【讨论】:

【参考方案2】:

它工作正常。 37152548 是一个整数,所以数字格式只会添加逗号。如果您希望最后 2 个数字在小数点的另一侧,则需要将其除以 100

$var = number_format($var/100, 2);

如果 var 是“371525.48”,那么它将按照您想要的方式对其进行格式化。如果您想要不带逗号,请尝试

$var = number_format($var/100, 2,'.','');

【讨论】:

【参考方案3】:

无论如何,php 都会将您的字符串转换为数字。至于小数位,既然你说:

我需要转换一个字符串,比如 37152548 到 371525,48 或 371525.48

...好吧,除以 100:

$var = '37152548';
echo $var / 100; //outputs 371525.48

如果你想确定你有一个数字,那么使用floatval(因为它返回一个数字而不是像number_format这样的字符串):

$var = '37152548';
$var = floatval($var) / 100;
echo $var; //outputs: 371525.48
echo '<br>'; //new line
//And you can do calculations:
echo $var - 500; //outputs: 371025.48

floatval 将您的字符串转换为浮点变量。注意:PHP不区分单精度和双精度,实际上doubleval只是floatval的别名。

【讨论】:

以上是关于在 PHP 中将字符串转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章

在 vc++ 中将字符串转换为双精度

在 C++ 中将字符串转换为双精度

如何使用 stringstream 在 C++ 中将字符串转换为双精度值 [关闭]

尝试在 C++ 中将字符串转换为双精度时遇到分段错误

如何在 C++ 中将字符串转换为双精度值?

在java中将十六进制数字字符串转换为双精度数字