3

次の double 値の桁数を取得しようとしています: 56.46855976 を文字列に変換せずに (そして単に "." を "" に置き換えます)。

誰かアイデアはありますか?

4

3 に答える 3

5

小数点の前の桁が得られる1->になるまで、数値を10で割る必要がある頻度を数えます。

次に、元の数値に10を掛けて、小数点以下の桁が得られるMath.Floor-result->と等しくなるまでの頻度を数えます。

追加。喜んでください。

編集:ジョーイが指摘するように、それにはいくつかの不信感があります。無限ループを作成しないように、事前に最大桁数を定義してください。一方、「デンマークの海岸はどれくらいですか?」...

于 2010-09-16T11:48:45.260 に答える
0

文字列への変換は、あなたが持っている最良のオプションかもしれません。doublesは内部的にBase2で表されることに注意してください。したがって、表示される10進表現は、実際に格納されている値(2 53までの整数を除く)の近似値にすぎません。これは、個々の2の累乗の合計です。

したがって、2進数表現から小数点以下の桁数を把握しようとすることは、確かに簡単または簡単な作業ではありません。特に、フレームワークは、3.999999999998のような数値を4.0のように表示するために丸めを適用する場合があるため、実際よりも精度が高いように見えます。 。

于 2010-09-16T11:48:22.200 に答える