- - PR -
C#で小数を累乗したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-06 10:23
いつもお世話になってます。
現在、VS2005のC#を使用して開発をしております。 掲題のとおり、少数を累乗する関数を探しています。 Math.Powを使用しても期待している結果が取得できず、困っています。 どなたか小数を累乗できる関数をご存知の方、よろしければ是非ご教授お願い致します。 | ||||||||
|
投稿日時: 2006-10-06 10:32
通常はMath.Powを使います。どのようなパラメータを与えて、どのような結果が得られ、望む結果とどのように違うのかを教えてくれないとアドバイス出来ないと思いませんか? #いっそループの中でn乗回掛け算しますか? | ||||||||
|
投稿日時: 2006-10-06 10:38
Math.Powの問題じゃなくてdoubleの精度の問題じゃないの?
もちろん検証した上でMath.Powが使えないと言ってるんだよね? | ||||||||
|
投稿日時: 2006-10-06 10:40
double型で扱っているので、誤差が出ちゃっているとかそういうことでしょうか? 類似スレ:[教えて!goo] C#の型について(doubleとdecimal) | ||||||||
|
投稿日時: 2006-10-06 13:49
レス有難うございます。
int i = Math.Pow(0.8, count) // ここでcountには2が入っているとします。 期待している結果は 0.8 * 0.8 = 0.64 現在上記のロジックで取得できる結果は1.25となっています。 なぜこのような現象が起きるかわからずに苦心しております。何か解決方法等ございますでしょうか? | ||||||||
|
投稿日時: 2006-10-06 14:00
テスト用に新規プロジェクトで試してみても同じ結果でしょうか? 私が試したところ、0.64にきちんとなりましたよ。 それと、Math.Powの結果は double型ですので int型で受け取らないほうがいいです。 MSDN System.Math.Pow | ||||||||
|
投稿日時: 2006-10-06 14:01
i の型は int であるのに、結果は '1.25' になるのですか? 結果が小数になること自体おかしいですよね。 これでは、"countには2が入っているとします" にも、 誤りがあるのではないかと感じてしまいます。 もっと明確に 「ミニマム テスト」 をしましょう。
これで再現しないようであれば、ただのミスだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-10-06 16:08
Math.Pow(0.8, -1)
が1.25なので-1が入ってると思ってデバッグしてみるといいかも |