[問題] if 條件的問題

看板C_and_CPP作者 (皮皮)時間13年前 (2010/11/15 15:20), 編輯推噓2(209)
留言11則, 9人參與, 最新討論串1/1
我有一個連續x所跑出y的結果 希望只printf 我指定的x 我一邊給X 一邊出來y 過程 是用if(x==a) {printf("%f",y);} a是我要的x 請問 這個條件是 有什麼限制嗎? ex 下面是我自己做的小測試 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float x,k; x=1.0; k=1.0; while(x<=3.0){ x=x+k; //printf("%f",x); if(x==2.0){ printf(x="%f",x); } } system("pause"); return 0; } 如果 X=0.1 k=0.1 就不行 no printf X=1.0 k=1.0 就可以 printf x=2.0 我做了測試 還想不懂 是跟int float 有關嗎? 謝謝 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.120.36 ※ 編輯: cmzzzzz 來自: 140.115.120.36 (11/15 15:23)

11/15 15:22, , 1F
快去看看第十一誡
11/15 15:22, 1F

11/15 15:26, , 2F
k = 0.1 時 x = 1.0 + 0.1 = 1.1 ,不等於2.0就不會印出
11/15 15:26, 2F

11/15 15:27, , 3F
不等於2.0當然不會印出阿
11/15 15:27, 3F
※ 編輯: cmzzzzz 來自: 140.115.120.36 (11/15 15:28) ※ 編輯: cmzzzzz 來自: 140.115.120.36 (11/15 15:29)

11/15 15:33, , 4F
不好意思 我的敘述打錯了
11/15 15:33, 4F

11/15 15:35, , 5F
X=0.1 k=0.1 時x=0.1+0.1=0.2不等於2.0當然不會印出啊
11/15 15:35, 5F

11/15 15:37, , 6F
所以說你有沒有去看第十一誡...
11/15 15:37, 6F

11/15 15:38, , 7F
你犯了浮點數不能用 == 比較相等的大忌
11/15 15:38, 7F

11/15 16:25, , 8F
應該會編譯錯誤吧 -.-
11/15 16:25, 8F

11/15 22:43, , 9F
好奇如果真的要比較浮點數的話要怎麼辦? 不容許誤差的話...
11/15 22:43, 9F

11/16 00:11, , 10F
不容許誤差...不太可能? 需要多精確, 有值域嗎?
11/16 00:11, 10F

11/16 12:04, , 11F
相減小於某誤差就視為等於
11/16 12:04, 11F
文章代碼(AID): #1CuDzNhi (C_and_CPP)