2013-12-09 38 views
-2

我一直在爲PHP重寫一個BASIC程序。我經歷了一個問題跑,讓我解釋一下:BASIC INT和PHP之間的差異int,如何解決?

在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 

爲什麼這三個例子之間有這麼大的差別?在這個例子中,我需要PHP輸出30的值,但我不知道該如何去做。請幫助ty!

+1

您是否試過http://www.php.net/intval? – Matteo

+0

閱讀浮點數學。對於PHP的浮點數學,使用'bcmath':http://php.net/manual/en/book.bc.php – Nanne

+3

首先要注意的是你的基本數學出''var/$ var - $ float'是不同於'$ var /($ var - $ float)'方括號首先被評估爲101.第二件要注意的事情是,你將其強制轉換爲INT,所以php正在做邏輯事務並將30.5到31舍入到31.你的第一個陳述是正確的,但刪除硬鑄 – Dave

回答

1

基本就是使用整數除法,以及減少最終結果爲int,所以你要模仿這在PHP(PHP轉換爲float默認情況下,而不是減少到int)。

這意味着在BOTH階段(分割和減法),您需要將值減小到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); 

the PHP docs

PHP中沒有整數除法運算符。 1/2產生浮點數 0.5。該值可以被轉化爲一個整數以將其向下舍入,[...]

+0

你是我的英雄夥計。 – TheRealWitblitz

相關問題