例として、1から5まで0.1刻みの値の総和と積を出力するプログラムを考えます。大した誤差は無いと思いますが、誤差を最小限に抑えるプログラムを考えてみました。和については該当の値の10倍にあたる整数値を足していき、最後に0.1をかけています。積については該当の値の10のn乗を考えて最後に10のn乗で割るイメージです。
方針として私はこれで誤差を最小に抑えられると思ったのですが、他にもより良い方法があれば教えていただけますでしょうか。もしくはこれで誤差を最小に抑えられるのであれば、これで大丈夫といったコメントを頂けると幸いです。
C
1#include <stdio.h> 2 3int main(void){ 4 int sum=0; 5 unsigned long long int product=1, count=1; 6 for (int i = 10; i <= 50; i++) { 7 count *= 10; 8 sum += i; 9 product *= i; 10 printf("%d : sum = %-3.1f, product = %-8.3f\n",i-1,sum*0.1,(float) product/count); 11 } 12}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/11 03:01