dポイントプレゼントキャンペーン実施中!

[0, 2π] の範囲を10等分して等分点x0,x1,…,x10を定めます。
(x0=0,x10=2π)xn(n=0~10)におけるsin(xn)の値を、次の形式で出力するプログラムを作成してください。(while文をなるべく用いるて)
http://hospitab.114090.tv/a.gif

という課題が出たのですが、上の画像の、 5と10のsin(x) の値だけ異なってしまいます。

5 3.142e+00 1.225e-16
10 6.283e+00 -2.449e-16

となってしまいます。

また、画像では数字の部分が縦にそろっていますが、それができません。
普通に、
1.225e-16
-5.878e-01
などと表示されてしまいます。
1.225e-16
-5.878e-01
としたいのですが…。

わかりにくい文章で申し訳ありません。
どなたかよろしくお願いします!

ちなみに、以下です。

#include <stdio.h>
#include <math.h>

int main(void)
{
int n;
double x,y;

n=0;
x = 2.0 * M_PI * 1e-1;

while (n <= 10)
{
printf("%2d %.3e %.3e\n",n,x*n, sin(x*n));
n++;
}
}

A 回答 (1件)

処理系不明なので正確なことはいえませんが...



おそらく画像の結果は、IEC559の単精度浮動小数点数で計算した結果だと思います。いずれにせよ、n=5およびn=10は本来0になるべきですので、計算誤差によって結果が異なるのは仕方がありません。

もうひとつの質問についてですが、書式を

% .3e

のようにすれば解決できます。ちょっと分かりにくいですが、%と.の間にスペースが入っています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

誤差によるものなのですね。
とても納得できました^^
もうひとつの質問の方も、解決いたしました☆
ありがとうございました!!

お礼日時:2008/05/30 12:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!