Re: [問題] 浮點數運算好怪..

看板C_and_CPP (C/C++)作者 (sjgau)時間16年前 (2010/03/30 13:46), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
float 型態的變數, 它的經精確度 只有 5-6位, 所以會產生這種現像. 你可以 這麼作 x= ((c-a)/b) + 1; sprintf(s1, "%.5f", x); printf("s1= %s\n", s1); 有時候正確, 有時候不正確. 原因是, float 型態的變數, 不是連續的. ※ 引述《vaca1 (無聊人)》之銘言: : 遇到的問題: 浮點數運算的問題(附code) : 希望得到的正確結果:2 : 程式跑出來的錯誤結果:1.999999 : 開發平台:code blocks : 有問題的code: : #include<stdlib.h> : #include<stdio.h> : void main() : { : float a=2; : float b=0.1; : float c=2.1; : printf("%f",(c-a)/b+1); : printf("\n"); : system("pause"); : } : 補充說明: : 按照正常數學來算 答案應該是2呀..答案卻是1.999999.. : 如果我把c改成2.2..答案又正確了是3.. : 請問這是為甚麼呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.231.88.156

03/30 14:08, , 1F
呃...並不是很明白您的幾行程式碼...小弟再研究研究~~~
03/30 14:08, 1F

03/30 14:08, , 2F
仍然要感謝您
03/30 14:08, 2F

03/31 01:43, , 3F
為什麼要轉成string來印? 直接用%.5f不行嗎 @@?
03/31 01:43, 3F
文章代碼(AID): #1BiP0wn5 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BiP0wn5 (C_and_CPP)