【发布时间】:2013-12-09 12:13:52
【问题描述】:
我一直在用 PHP 重写一个 BASIC 程序。我遇到了一个问题,让我解释一下:
在 BASIC 代码中,我有以下带有值的语句:
LSLATVER=1590
PITCHVER=50
NRSLATHOR=INT(LSLATVER/PITCHVER-.8)
// output: 30
在 PHP 中我有两个这样的例子:
$length_vertical_slat = 1590;
$vertical_pitch = 50;
echo $number_of_horizontal_slats = (int) ($length_vertical_slat / $vertical_pitch - .8);
// output: 31
echo $number_of_horizontal_slats = (int) ($length_vertical_slat / ($vertical_pitch - .8));
// output: 32
为什么这 3 个示例之间存在如此巨大的差异?在此示例中,我需要 PHP 输出 30 的值,但我不知道该怎么做。请帮忙!
【问题讨论】:
-
你试过php.net/intval吗?
-
阅读浮点数学。对于 php 浮点数学,使用'bcmath':php.net/manual/en/book.bc.php
-
首先要注意的是您的基本数学已失效
$var/$var - $float与$var/($var - $float)不同,括号首先计算为数学 101。要注意的第二件事是,您很难将其转换为 INT所以 php 正在做 logica 事情并将 30.5 舍入到 31 到 31。你的第一个陈述是正确的,但删除了硬演员 -
将阅读。我是一个懒惰的程序员,所以请原谅我。原谅我!!!
-
在这种情况下,
floatval()my $vars 也是一种好习惯吗?