作者sunneo (艾斯寇德)
看板C_and_CPP
標題Re: [語法] 在寫程式時 遇到將浮點數轉換成整數的問題
時間Tue Sep 15 21:52:44 2009
-----------------------------------------------------------------
當然是有理由的!
如果今天某人搭乘距離是1.850公里
原題目 就你所寫的
============================================================================
假定計程車在1.5公里內, 車資都是70元;
超過1.5公里後, 每0.3公里, 加收5元 (不足0.3公里, 仍以0.3公里計)
請輸入搭乘里程數(以公里計)(可精確到小數點第三位,即可精確到公尺)(ex:1.853公里)
求算對應的車資為多少.
============================================================================
那1.850公里減掉基本運費的里程數(1.5公里)為
1.85-1.5=0.35(公里)
又因為每0.3公里加收五元(不足0.3公里以0.3公里計)
而(0.35/0.3)*5=1.1666666..
.
這裡是 1.1666666個 0.3公里,他確實>=1,因此滿足`0.3公里的條件`
1.16666...*5= 5.83333333(元)
這樣會使得總運費只有70+5.83333333= 75.83333333
捨去小數得到的只是75元
根本就嚴重計算錯誤
本來就應該是75.833了不是?
正確算法應該是遇到
0.35/0.3=1.1666666...小數點後面有小數時
就要無條件進位讓1.1666666....變成2
原題目你所po的部份沒有顯示這玩意啊,你應該只是為了反駁而寫這個解釋吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.114.2
推 VictorTom:其實他有寫到模擬計程車車車費計算這件事.... 09/15 21:55
→ VictorTom:不過他說的計算錯誤是有語病, 數學上這樣計算是正確的, 09/15 21:56
→ VictorTom:只是這樣的算法沒有meet題目的要求; 所以他需要的計算 09/15 21:57
推 pttfly:s大似乎沒看清楚題目? 只是原po程式中的算式與邏輯寫錯罷了 09/15 21:57
→ VictorTom:是每次+5一階~~梯型式的小數進位法. 09/15 21:57
→ VictorTom:話說pttfly在原文推的那件事更值得注意, t的init這個XD 09/15 21:59
推 LPH66:那個其實是新手常見錯誤 09/15 22:15
→ LPH66:誤以為 C 是像 excel 一樣可以先給公式然後自動計算 09/15 22:15
→ LPH66:然後就算他有正確求出 t 來 個人以為那個 == 還是很危險... 09/15 22:16
推 VictorTom:科科~~終於有人提到floating point的 == compare了XD 09/15 22:23
→ sunneo:歐 原來不足0.3以0.3計的意思是這樣啊 09/15 22:41
→ sunneo:那我這篇就變成來亂的了XDrz ... 09/15 22:42