基本INT和PHP INT之间的差异,如何解决?

基本INT和PHP INT之间的差异,如何解决?,php,integer,basic,Php,Integer,Basic,我一直在用PHP重新编写一个基本程序。我遇到了一个问题,让我解释一下: 在基本代码中,我有以下带有值的语句: 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)

我一直在用PHP重新编写一个基本程序。我遇到了一个问题,让我解释一下:

在基本代码中,我有以下带有值的语句:

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
为什么这三个例子之间有如此巨大的差异?在本例中,我需要PHP输出30的值,但我不知道如何进行。请救救泰

BASIC使用整数除法,并将最终结果减少为int,因此您需要在PHP中模拟这一点(默认情况下,PHP转换为
float
,而不是减少为
int

这意味着在两个阶段(除法和减法),您都希望将值减小为int。PHP文档建议通过将值转换为int,就像您在示例中所做的那样:

$length_vertical_slat = 1590;
$vertical_pitch = 50;    

// outputs 30
echo $number_of_horizontal_slats = (int)((int)($length_vertical_slat / $vertical_pitch) - .8);

发件人:

PHP中没有整数除法运算符。1/2产生浮动 0.5. 可以将该值强制转换为整数以向下舍入[…]


你试过吗?读一读浮点数学。对于php浮点数学,请使用“bcmath”:首先要注意的是,您的基础数学已出局。
$var/$var-$float
$var/($var-$float)
括号首先计算数学101。第二件需要注意的事情是,您将其硬转换为INT,因此php正在执行logica操作,并将其四舍五入为30.5到31到31。你的第一句话是正确的,但去掉硬句,你就会明白。我是个懒惰的程序员,所以请原谅我。原谅我!!!在这种情况下,也使用
floatval()
my$vars是否是一种好的做法?你是我的英雄。