vine-users ML アーカイブ



[vine-users:057017] long double の printf

  • From: K Hanai <hanai@xxxxxxxxxxxxxxxx>
  • Subject: [vine-users:057017] long double の printf
  • Date: Wed, 18 Dec 2002 15:20:44 +0900 (JST)
花井@京都です.

ちょっと詳しい方教えて下さい.

x86 の Vine-2.5 で

#include <stdio.h>
int main(void)
{
  long double x, y;

  x = 3.14159;
  y = x * x * x * x * x;

  printf("x^5 = %14.5E\n", y);
         return 0;
}

なプログラムを作って, gcc でコンパイルし,実行すると,
$ ./long_dbl_test
x^5 =  -3.29556E-188

となってしまいます.

一方,printf("x^5 = %14.5E\n", y); を 
printf("x^5 = %14.5E\n", (double) y); としておくと,

$ ./long_dbl_test
x^5 =    3.06018E+02

と正しい答を表示します.printf は long double では
使えないのでしょうか?
$ rpm -q gcc
gcc-2.95.3-2vl22

です.ppc や alpha ではこんなことにならないようです.
(long double のままでも正しい答を表示します)