0

コンピュータ サイエンス コース用のグラフィックス コンピューティング アプリケーションを開発しています。ベクトルに対して多くの計算を行っていますが、浮動小数点演算であるため、深刻な切り捨てが発生することがあります。

問題は、浮動小数点数の小数点以下の桁数をたとえば 2 桁に制限するいくつかの方法を試したことです。ここに私が試したいくつかのことがあります:

1 - 100 で割って掛けます。これは常に機能するとは限りません。実際、これは私にはうまくいきません。

2 - DecimalFormat を使用します。1000 未満の数値がある場合、このフォーマット方法はうまく機能します。 1003.3124 などの数値がある場合、 1,003.31 にフォーマットされます。このフォーマットは文字列を返すため、浮動小数点数の解析関数はカンマのために機能しません。DecimalFormatSymbols() setGroupingSeparator を別の文字に設定しようとしましたが、スペースや長さのない文字 (「\u0200B」、「\u0000」、...) を含めて、「?」が表示されました。目的の文字の代わりに。

3 - ロケールを US に設定します。私の Windows はブラジルのポルトガル語で実行されているので (ここでは、ドットとコマは異なる用紙を持っています: あなたの 1,300.42 は私たちの 1.300,42 です!) 私はこれはばかげていると思いますが、ここでの問題ではありません。これも何も解決しませんでした。

4 - 文字列を取得し、カンマを削除して、浮動小数点数を返します。これは私が今やっていることであり、正しく機能しています。ただし、グラフィックアプリケーションなので、数値で常に正規化を行っています。そのため、文字列ソリューションは常に重すぎます。

この問題を解決する別の方法を知っていますか? 最も最適化されたものが必要です。わかりにくかったらごめんなさい。

4

3 に答える 3