http://www.exploringbinary.com/correct-decimal-to-floating-point-using-big-integers/を実装しようとしています
何度も読み返しましたが、とても快適です。最初のステップは、値が文字列形式であると仮定することです。私の実装では、値が double 形式であると想定しています。
float/double の小数部分を構成する桁数を取得することは可能ですか?
たとえば、値 3.24325 (ランダムに選択しただけなので、バイナリで正確に表現できないことを願っています)。上記のリンクのアルゴリズムを続行できるように、小数部分が 5 桁であることを知りたいです。
次のようなものを使用modf
すると、一見正しい小数値のように見えますが、実際には丸められます (小数部分を 2 進数で正確に表すことができないと仮定します)。元の値から型キャストされた int を減算すると、同じ丸められた 10 進数になります。sprintf を使用して文字列に値を記録すると、同様の問題が発生すると思いますが (私は信じています)、それを確認するのに十分な時間がありませんでした。
上記のリンクのアルゴリズムのステップ 1 に対する解決策はありますか?
ありがとうございました。