[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:29664] Re: long double について



松田です.


すみません,全くの嘘情報を流してしまいました.-m128bit-long-double
は関係ありません.printf関数の使い方の間違いのせいでした.

#include <stdio.h>

int main()
{
  long double ldx = 12.345678901234567890L, ldy;

  printf("%.20Le\n%.20e\n%.20Le\n", ldx, ldx, ldx);
  printf("%d\n", sizeof ldx);
  ldy = ldx;
  printf("%.20Le\n", ldy);
  printf("%.20e\n", ldy);
  printf("%.20Le\n", ldy);
  return 0;
}

同一のprintf内で,異なる型の変換指定子を用いると以降同じ関数内の表示結果
がおかしくなる
というものでした.これは普通のdoubleでも起こるものです.


> 松田です.
> 
> 表題通りlong doubleを表示するプログラムが旨くいきません.
> 以下のように最も単純なもの,
> 
> #include <stdio.h>
> 
> int main()
> {
> 
>   long doble ldx = 1.23L;
> 
>   printf("%Le", ldx);
> 
>   return 0;
> }
> 
> でも,結果が変です.いろいろ調べていたら,次のコンパイルオプションをつけ
> ると正常に表示
> されることが分かりました.
> 
>  -m128bit-long-double
> 
> この時,long double 変数は16bytesになります.デフォルトは
> 
>  -m96bit-long-double
> 
> の12bytesだと思っていたのですが,gccを作るときにlong doubleを16bytes
> にすることができるのでしょうか?
> 
> 
> -------------------------------------------------------------------
>      mmm     mmm     | matuda@xxxxxxxxxxxxxxxxxxx
>   ((^_^)) <- ->    | 松田七美男@東京電機大学 環境物質化学科 教授
>     {   } ({   })  | 〒101-8457  千代田区神田錦町2-2
>     _I I_    _I_     | Tel:03(5280)3402  Fax:03(5280)3570
> 
> 
> 


-- 
-------------------------------------------------------------------
     mmm     mmm     | matuda@xxxxxxxxxxxxxxxxxxx
  ((^_^)) <- ->    | 松田七美男@東京電機大学 環境物質化学科 教授
    {   } ({   })  | 〒101-8457  千代田区神田錦町2-2
    _I I_    _I_     | Tel:03(5280)3402  Fax:03(5280)3570


References
[plamo:29663] long double について, matuda

[検索ページ] [メール一覧]
Plamo ML 公開システム