我有一个从5到6.4的数字数组,但数字与英尺和英寸有关,我正在使用它们进行计算。
当我使用5.10时,它会移除零,我的输出与5.1相同。
无论如何都要阻止PHP删除0.我认为它会进行某种默认的转换。
提前致谢
答案 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)
答案 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)
这些值会在代码中的某处隐含地转换为浮点数。您需要找到该行并重写它以保持字符串类型。您是否在数学表达式中使用这些值,例如?