2進浮動小数点は、10進数で正確にフォーマットできます。結果の文字列は多少長くなる可能性がありますが、可能です。では、浮動小数点の私の記事私は精度の重要性をカバーし、そして今、私はこの機能が欲しいです。この課題は、浮動小数点値を入力として受け取り、正確な10進文字列を出力としてフォーマットするプログラムまたは関数を記述することです。
正しい浮動小数点数で作業していることを確認するには、プログラムへの入力として正確な形式を指定する必要があります。この形式は2つの整数Significand Exponent
で、実際の浮動小数点値はSignificand * 2 ^ Exponent
です。どちらの値も負になる可能性があることに注意してください。
詳細:
- 少なくとも32ビットfloatの範囲と精度をサポートする必要があります(それ以上の入力はできません)
- 10進数でフォーマットされた値は正確な表現である必要があります(浮動小数点への正しい丸めを保証するのに十分近いだけでは十分ではありません)。
- 標準ライブラリの浮動小数点フォーマット関数の正確性や十分な速さ(例:)を信頼していない
printf
ため、使用できない場合があります。あなたは、書式設定を行う必要があります。統合フォーマット/変換関数が許可されています。 .
整数コンポーネントがない場合は、の前に必要な1つの先行ゼロを除いて、先行ゼロまたは後続ゼロがない場合があります。- 関数、またはプログラム全体が許可されます。
例:
1 -2 => 0.25
17 -3 => 2.125
-123 11 => -251904
17 50 => 19140298416324608
23 -13 => 0.0028076171875
3 120 => 3987683987354747618711421180841033728
3 -50 => 0.00000000000000266453525910037569701671600341796875
-3 -50 => -0.00000000000000266453525910037569701671600341796875
10 -2 => 2.5
-12345 -3 => -1543.125
0 0 => 0
161 -4 => 10.0625
512 -3 => 64
最短のコードが勝ちます。
.0
ますか?
0.abc
が先行ゼロでない場合はabc.0
、後続ゼロではありません。
.0
、浮動小数点数を処理するときは常に整数で終わるのも慣例です。たとえば、Python:str(1.0) == '1.0'
とを参照してくださいstr(1) == '1'
。あなたの論理はまだ一貫していません。