PHP,防止删除前导零

时间:2010-02-01 15:56:22

标签: php math

我有一个从5到6.4的数字数组,但数字与英尺和英寸有关,我正在使用它们进行计算。

当我使用5.10时,它会移除零,我的输出与5.1相同。

无论如何都要阻止PHP删除0.我认为它会进行某种默认的转换。

提前致谢

7 个答案:

答案 0 :(得分:9)

如果你的意思是“5英尺10英寸”,那么不能用整数(或浮点数)表示 - 如你所见,你会遇到这种方式的主要问题。

计算机正在按照您的要求进行操作(不一定是您的意图)。例如。谷歌告诉我,5.8英尺== 69.6英寸,略大于5英尺8英寸(== 68英寸)。但是,(浮动)5.10 ===(浮动)5.1 ===(浮动)5.100000(五加十分之一)。

对于美国的测量系统,你需要比int更复杂的东西 - 因为英尺和英寸不能完全相互转换成十进制(IIRC,1英尺= 12英寸,因此5英尺1英寸) = 5.083英尺,加上舍入误差)。

查看例如的 Zend_Measure ;它是PHP类的集合,允许您使用不同的测量标准,我认为也支持US / Imperial系统。

编辑:如果其他所有内容都失败了,您可以将这两个数字转换为英寸 - 例如5'10“==(5 * 12)+ 10 == 70英寸,这是一个很好的整数,你可以使用。

答案 1 :(得分:5)

当使用非十进制单位(如英尺和英寸或时间)时,我喜欢使用我感兴趣的最小单位(秒或英寸)来内部跟踪值,然后转换为英尺和英寸以进行输出。我认为你会发现这比试图为此目的调整十进制数更容易。

答案 2 :(得分:3)

转换为指标

答案 3 :(得分:0)

您可以使用printf()sprintf()

手动投射

(即将推出链接)

答案 4 :(得分:0)

是的,它是Settype

settype($bar, "string");  // $bar is now "1" (string)

等待。 5.10中的0如何前导为零?

我在读comp时失败了。 printf / sprintf在强制2个有效数字的情况下效果会更好,无论尾随数是否为零。

答案 5 :(得分:0)

您可以尝试使用printf

$a = 5.10;

echo $a;            // prints 5.1

printf("%.2f",$a);  // prints 5.10

答案 6 :(得分:0)

这些值会在代码中的某处隐含地转换为浮点数。您需要找到该行并重写它以保持字符串类型。您是否在数学表达式中使用这些值,例如?