您當前的位置:首頁 > 體育

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?

作者:由 哈哈 發表于 體育時間:2021-03-10

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?韶華傾負2021-03-10 02:00:13

剛剛沒仔細看你的程式碼,乍一看以為是浮點數缺失精度問題,原來你把浮點數輸入到一個整型變數中!

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?站起來2021-03-10 09:13:16

首先糾正你一個寫法問題:

寫int main(void)

或者int main(int argc, char *argv[])

不要再寫void main()、main()之類。

然後,把a和b都換成float型,scanf裡用%f。

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?知乎使用者2021-03-10 12:05:43

那你變數a怎麼不定義成float型別?

現在你用%d讀入一個浮點數,你猜讀完a的值是多少?

還有,要學會使用除錯工具,跟蹤變數的值變化情況。

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?C語言劉老師2021-03-10 12:34:50

不只是輸入大一點的數就會有誤差。。。a定義的是int型別,輸入的是浮點型,你把a的值打印出來看看和你輸入的是不是一致的?

如果你要保留更多的有效數字,最好都定義成double型別

c語言入門寫了個乘法程式碼,公里變成英里,為什麼輸入大一點的數會有誤差?知乎使用者kZ65iZ2021-03-10 14:22:06

a是整型的,scanf也會以%d,即十進位制形式讀取你輸入的值,但你輸入的是浮點數,所以scanf只讀取了190,小數部分沒有被讀取。你得把a定義成浮點數,再把scanf的資料讀取格式改成浮點型,如%f,%lf等等

標簽: 浮點數  int  main  scanf  輸入