3
4

1 に答える 1

1

回答 1 x86 上の現在の bash のprintflong doubleは、IEEE 754 に従って入出力変換を使用します (拡張および拡張可能な精度フォーマットx86 拡張精度フォーマット、bash のfloatmax_tの定義を参照)。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
    printf("%La\n", strtold("0x1.000010C6F7A0B5E1F", NULL));
}
  • その出力は0x8.00008637bd05af1p-3です。

回答 2 Bash は最終的に C ライブラリのprintf; 上記の C プログラムの出力は、参照している標準に従っています。

小数点文字の前に1 つの 16 進数 (引数が正規化された浮動小数点数であり、それ以外の場合は未指定の場合は非ゼロ) があります。

于 2013-07-26T06:32:11.610 に答える