Re: [語法] 在寫程式時 遇到將浮點數轉換成整數的問題
我用C寫的
--
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float kilometer;
int fare;
printf("請輸入里程(公里)[可輸入至小數點第三位的數字]:");
scanf("%f", &kilometer);
if (kilometer <= 1.5)
{
fare = 70;
}
else
{
fare = 70 + 5 * (int)ceil((kilometer - 1.5) / 0.3);
}
printf("車資 = %d\n", fare);
system("pause");
return 0;
}
不知道為什麼我沒加(int)也不會有warning
編譯時我有加上-Wall
--
※ 引述《duv (duv)》之銘言:
: 底下是一個我寫的簡單程式
: 程式是有關於計程車車資的計算問題:
: 假定計程車在1.5公里內, 車資都是70元;
: 超過1.5公里後, 每0.3公里, 加收5元 (不足0.3公里, 仍以0.3公里計)
: 請輸入搭乘里程數(以公里計)(可精確到小數點第三位,即可精確到公尺)(ex:1.853公里)
: 求算對應的車資為多少.
: ==============================================================================
: 底下則是我寫的程式
: 基本上程式可以跑出正確的結果
: 但由於搭乘里程數為浮點數
: 所以編譯器(我用dev C++這個編譯器)在編譯程式的時候
: 都會出現
: In function 'int main()':
: [Warning] converting to 'int' from 'double'
: [Warning] converting to 'int' from 'double'
: [Warning] converting to 'int' from 'double'
: 這樣的警示訊息
: 想請問 這樣的警示訊息 有可能是在警示什麼樣的負面情況呢@ @
: 又如果要避免出現這樣的警示訊息 我原來的程式寫法要怎麼改善(或改變)呢
: ==============================================================================
: 我寫的程式
: float y;
: int t;
: t=(y-1.5)/0.3;
: int z;
: int w;
: cout<<"請輸入里程(公里)[可輸入至小數點第三位的數字]";
: cin>>y;
: if (y<=1.500)
: {
: z=70;
: }
: else
: {
: if(0.3*(t+1.5)==y)
: {
: z=(y-1.5)/0.3;
: w=70+5*z;
: }
: else
: {
: z=(y-1.5)/0.3;
: w=70+5*(z+1);
: }
: }
: cout<<"車資="<<w<<endl;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.12.79
推
09/15 22:31, , 1F
09/15 22:31, 1F
→
09/15 22:31, , 2F
09/15 22:31, 2F
→
09/15 22:31, , 3F
09/15 22:31, 3F
推
09/15 22:58, , 4F
09/15 22:58, 4F
→
09/15 23:52, , 5F
09/15 23:52, 5F
→
09/15 23:53, , 6F
09/15 23:53, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 7 篇):