PHP在字符串中显示浮点数

时间:2019-01-20 04:42:40

标签: php integer

我想在php字符串中显示一个 float 数字。

类似:

My float number is: 0.00003485

但是当我使用echo时,我会看到这样的声音:

My float number is: 3.485E-5

此外,我知道我可以使用printf("%.10f",$float)代码,但是我需要在字符串的很多地方使用它,因此不能使用printf

我应该在字符串上使用什么代码来显示浮点数?我不要那个短号码(3.485E-5)。

3 个答案:

答案 0 :(得分:0)

在某些情况下,我更喜欢声明浮点数作为字符串:

MyFloatNumber =“ 0.0000000000000000000000003485”;

所以

echo MyFlatNumber; //0.0000000000000000000000003485

答案 1 :(得分:0)

  

我知道我可以使用printf("%.10f",$float)代码,但是我需要在字符串的很多地方使用它,所以我不能使用printf。

我必须对此表示不同意见:

printf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);

或者,如果您需要一个字符串:

$foo = sprintf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);

当然,如果您的意思是违反项目风格准则或公司政策的,那就是另一回事了。

  

我应该在字符串上使用什么代码来显示浮点数?

真的吗? PHP中的浮点数是64位IEEE 754双精度格式位图。根据此online converter,数字0.00003485为:

0010010001010111110011100001110100101110111001001111

当然,它们不是实际的1和0,而是不同的电压电平;-)

答案 2 :(得分:-1)

您可以编写函数以所需的任何方式处理此问题。为什么不呢?

function fval($f, $precision = 9) { 
    return number_format($f, $precision); 
}

然后在任何需要格式化的地方,大声喊出来:

$f = 3.485E-5;
echo fval($f);  // this will print: 0.000003485