2012-09-27 3 views
2

하나의 카운터를 만들면서 PHP를 사용하고 거의 모든 것이 잘 진행되고 있지만 작은 버그가 하나 발견되었습니다.내 PHP 코드가 올바로 추가되지 않음

카운터에서 처음 두 단계가 진행되면 $bid$stax이됩니다.

내 마지막 결과 $pay은 다음과 같아야합니다 8138 + 814 + 448 = 9400 있지만 그것은 나에게 $9,399

내 출력을주고있다 : 여기

Value $8,138 bid $814 tax $448 You Pay $9,399 
Value $8,952 bid $895 tax $492 You Pay $10,339 
Value $9,847 bid $985 tax $542 You Pay $11,373 

사전에

<?php 
$i = 0; 
$v = 8138; // value : 8138 
do { 
    $i++; 
    $bid = $v/10;  // output : $814 
    $ftax = $v + $bid; 
    $stax = $ftax/20; // output : tax $448 
    $pay = $v + $bid + $stax; // 8138 + 814 + 448 = 9400 
    echo "Value $" . number_format($v) . " bid $" . number_format($bid) . " tax $" . number_format($stax) . " You Pay $" . number_format($pay) . "<br />"; 
    $v = $v * 1.1; 
} while ($i <= 2); 
?> 

덕분에 내 PHP입니다 :)

+0

당신이 길을 따라 일부 소수를 잃고 생각에서 볼 .... – thatidiotguy

+0

은 아아 난 내 계산기하려고합니다 –

+1

$ 입찰이와 $ STAX에 소수점을 가지고 그래. 십진수를 사용하지 않으려면 위 또는 아래로 반올림해야합니다. – Pitchinnate

답변

4
소수를 떨어 뜨리지하기 위해 에코 줄을 변경

:

echo "Value $" . $v . " bid $" . $bid . " tax $" . $stax . " You Pay $" . $pay . "<br />"; 

값을 $ 8138 입찰 $ 813.8 당신은 $ 9399.39
가치 $ 8951.8 입찰 $ 895.18 당신이 지불 $ 492.349 세금 $ 10339.329
가치 $ 9846.98 입찰 $ 984.698 세금 $ 541.5839 당신은 $ 11373.2619

을 지불 지불 $ 447.59 세금 그래서 8138

+ 813.8 + 당신이 경우에, 다른 한편으로 아래로 9399.

에 반올림 447.59 = 9399.39, 즉각적으로 813.8 라운드에서 814 라운드 및 447.59 라운드에서 최대 448로 증가하지만 시작하기 전에 계산에 0.61을 추가 했으므로 분명히 더 높은 숫자 (9400)가됩니다.

수학 및 과학 교사는 끝까지 반복하지 말라고 말합니다. 매번 당신이 대답 할 때마다 답이 덜 정확하기 때문에 말입니다.

+0

감사합니다. Brendan Long for the help : 나는 그들을 반올림해야합니다. –

+0

@DeepakKumar 먼저 그들을 돌려 보내지 마십시오! 9399 답변 ** ** **입니다! 이 답변은 왜 그것이 올바른지 설명하고 있습니다. 사용자를 혼란스럽게 생각한다면 십진법을 표시하는 것을 제외하고는 아무 것도 변경할 필요가 없습니다. –

+0

나는 그것을 원한다면 9400을 반올림해야한다. 내 필요에 따라 9400 –

2

캐스팅/소수 자릿수 부족은 문제가 될 수 있습니다. har har har

3

round()을 사용하여 모든 나누기 계산을 반올림하여 소수 자릿수를 사용하지 않으려는 경우. 또한 십진수 곱셈. 액션 here

$i = 0; 
$v = 8138; // value : 8138 
do { 
$i++; 
$bid = round($v/10);  // output : $814 
$ftax = $v + $bid; 
$stax = round($ftax/20); // output : tax $448 
$pay = $v + $bid + $stax; // 8138 + 814 + 448 = 9400 
echo "Value $" . number_format($v) . " bid $" . number_format($bid) . " tax $" .  number_format($stax) . " You Pay $" . number_format($pay) . "<br />"; 
$v = round($v * 1.1); 
+0

감사합니다 coder1984 :) –

+0

당신은 환영합니다 :) –

관련 문제