1

浮動小数点数を次の非標準形式に変換する必要があります。「浮動小数点数 F (標準の 10 進指数形式)、その後に文字列の 10 乗、その後に整数 K が続きます。」

e% または frexp() に似た関数から指数を抽出する方法はありますか?

例: 3349.25 は、「3.34925 の 10 の 3 乗」になります。

4

2 に答える 2

3

frexp に相当する 10 進数を自分で簡単に実装できます。必要なコードは次のようになります。

int exponent = (int)log10(fabs(d));
double mantissa = d / pow(10, exponent);
printf("%f X 10^%d\n", mantissa, exponent);

まず、数値の絶対値の 10 を底とする対数をとって指数を決定します。(正の引数が必要なfabsためlog10必要です。) キャストはゼロに向かって丸められます。次に、仮数を除算して正規化します。

これは d==0 (または無限大または NaN) を処理しません。除算により結果に何らかのエラーが発生します。小さな数値または負の数値でテストしていませんが、これで何かを開始できるはずです。

于 2013-09-29T21:39:15.450 に答える