C言語 小数点付き2進数→10進数に変換する方法
解決したいこと
お世話になります。
問題の内容は、”2 進表現の小数を 10 進表現の小数に変換する課題である.通常はこのように 2 進表現の小数が文字列で与えられることはない.2 進小数の理解を深めるための課題である.0 以上 1 未満の実数が 2 進表現でコマンドライン引数に与えられる.この実数を 10 進表現で小数第 6 位まで出力せよ.”です。
自分でプログラムを作成しましたがテストが途中で失敗し、考えてもわからないため皆様にお聞きしたいです。
発生している問題・エラー
==== テスト 7 (Test case 7) ====
$ ./binary2double 0.11110000
0.933594==== 期待される出力 (Correct output) ====
0.937500
==== 出力の違い (Different lines) ====
--- 7.correct 2023-02-01 09:00:05.819287500 +0900
+++ 7.out 2023-02-01 14:51:52.510809600 +0900
@@ -1 +1 @@
-0.937500
+0.933594
\ No newline at end of file
================
テスト 7 失敗(failed)
該当するソースコード
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
double d, sum, x;
d = atof(argv[1]);
for (int i = 0; i < 8;i++){
x = 1;
d = d * 10;
if (d >= 1) {
for(int l = 0; l < i + 1 ;l++){
x *= 0.5;
}
sum += x;
d = d - 1;
}
}
printf("%.6f",sum);
return 0;
}