正確な」値を得ることは可能でしょうか? - ページ 5

 
WePlexus:
そう、そして電卓では0.09*5=0.45と 表示されるのです。:)

を正常化する必要があるだけです。

//double d=0.019999999999999999;
double d=NormalizeDouble(0.09*5,2);
double e=(int)(d*100)/100.0;
Print("e=",e);
 
abolk:

まあ、サンヨク、嘘つきだな。

私の機能です。

=0.44.
あなたのは確認してないんだけどね)
 
abolk:

ノーマライゼーションが行われればよいのです。

も選択肢の一つです )))

とか、この数字はどうしたんだ?)))

0.01999999999999999999
 
sanyooooook:

も選択肢の一つです )))

とか、この数字はどうしたんだ?)))

これは正規化が機能する最大数です。

double d=NormalizeDouble(0.01999999,18);
double e=(int)(d*100)/100.0;
Print("e=",e);

あと1つ9を取ると0.02に正規化されます。

 
abolk:

は正規化が行われる最大数である。

あと1回9を取れば、0.02に正常化します。
は切らないでね)
 
sanyooooook:
は数字を切り捨てない)
whatever --NormalizeDouble() の精度形式は 0-8 です。
 
abolk:
というわけで横並び -- NormalizeDouble()の精度のフォーマット -- 0-8
ということで、もう横向きです))
 
sanyooooook:
ということで、同じようなものです))

すでに問題の核心に迫っている--だから "すでに "なのです。

まず問題の分解-- 次に問題の合成

それとも、まだ未解決の部分があるのでしょうか?

 
abolk:

すでに問題の核心に近づいている--だから "すでに "なのです。

まず問題の分解-- 次に問題の合成

それともまだ未解明な点があるのでしょうか?

はい)

同じ関数(例えば、あなたが書いた関数)を使って、任意の入力数を正しい桁数に切り詰める方法。

これでもか

0.01999999999999999999

またはこれ

0.09*5
 
sanyooooook:

はい)

同じ関数を使って、入力された数値を正しい桁数に切り詰める方法。

これでもか

とか、これとか。

この問題を解くには、0.09*5は=0.4499999999ではなく、=0.45でなければならない。

ということになり、もしそれがないのであれば、問題は解決不可能です