[問題] 近似值問題
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我將line 42 最後的*2 移到line 43的話,第一個temp的直就是我想要的8,為何只是分成兩行寫而已會得到不同答案?
餵入的資料(Input):
12345
預期的正確結果(Expected Output):
想讓第一個temp值為8(因為2 * 4)
錯誤結果(Wrong Output):
第一個temp值為9
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
#include <stdio.h>
#include <math.h>
int judge(long a, int len);
int main(void)
{
long num;
printf("Number: ");
scanf("%li", &num);
// Claim a new variable "check" to see how length the num is
long check = num;
int count = 0;
while (check)
{
check = round(check / 10);
count++;
}
printf("Length: %d\n", count);
int sum = judge(num, count);
printf("sum = %d\n", sum);
}
int judge(long a, int len)
{
long even = 0, odd = 0, temp;
for (int i = 1; i <= len; i++)
{
// odd terms
if (i % 2 != 0)
{
odd += fmod(a, pow(10, i)) / pow(10, i - 1);
printf("odd: %li\n", odd);
}
// even terms
else
{
temp = fmod(a, pow(10, i)) / pow(10, i - 1) * 2;
// temp *= 2;
printf("temp: %li\n", temp);
even += temp / 10 + temp % 10;
printf("even: %li\n", even);
}
}
return odd + even;
}
補充說明(Supplement):
https://glot.io/snippets/gdt9xrcs0a
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.0.123 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1663930800.A.8DF.html
推
09/23 19:38,
2年前
, 1F
09/23 19:38, 1F
→
09/23 19:38,
2年前
, 2F
09/23 19:38, 2F
→
09/23 19:38,
2年前
, 3F
09/23 19:38, 3F
→
09/23 19:38,
2年前
, 4F
09/23 19:38, 4F
→
09/23 19:40,
2年前
, 5F
09/23 19:40, 5F
→
09/23 19:41,
2年前
, 6F
09/23 19:41, 6F
→
09/23 19:49,
2年前
, 7F
09/23 19:49, 7F
→
09/28 10:31,
2年前
, 8F
09/28 10:31, 8F
→
09/28 10:31,
2年前
, 9F
09/28 10:31, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章