Re: [問題] 浮點數運算好怪..
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
03/31 01:43, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章