C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 小数点以下含む計算について


(過去ログ 29 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■14080 / inTopicNo.1)  小数点以下含む計算について
  
□投稿者/ とも (6回)-(2008/02/08(Fri) 19:28:17)

分類:[VB.NET/VB2005] 


お忙しいところすみません。

言語[vb.net2005]

dim aa as double

aa = 3.0166666666666666
bb = aa * 825
dboug.print bb

bbの結果が2488.7499999999999945
としたいのですが、少数点以下を指定する関数はあるでしょうか?



引用返信 編集キー/
■14082 / inTopicNo.2)  Re[1]: 小数点以下含む計算について
□投稿者/ 魔界の仮面弁士 (607回)-(2008/02/08(Fri) 19:42:55)
2008/02/08(Fri) 19:46:14 編集(投稿者)
No14080 (とも さん) に返信
> aa = 3.0166666666666666
> bb = aa * 825 
> dboug.print bb
> bbの結果が2488.7499999999999945
> としたいのですが、少数点以下を指定する関数はあるでしょうか?

どういう意味でしょう? それでは計算が合わないと思いますが…。

3.0166666666666666  * 825 は、  2488.749999999999945  ですよね?
3.01666666666666666 * 825 なら、2488.7499999999999945 ですけれども。


Dim aa As Decimal
Dim bb As Decimal
aa = 3.01666666666666666D
bb = aa * 825D
Debug.Print("{0:0.0000000000000000}", bb)

引用返信 編集キー/
■14084 / inTopicNo.3)  Re[2]: 小数点以下含む計算について
□投稿者/ とも (7回)-(2008/02/08(Fri) 20:13:58)
No14082 (魔界の仮面弁士 さん) に返信
> 2008/02/08(Fri) 19:46:14 編集(投稿者)
>
> ■No14080 (とも さん) に返信
>>aa = 3.0166666666666666
>>bb = aa * 825
>>dboug.print bb
>>bbの結果が2488.7499999999999945
>>としたいのですが、少数点以下を指定する関数はあるでしょうか?
>
> どういう意味でしょう? それでは計算が合わないと思いますが…。
>
> 3.0166666666666666 * 825 は、 2488.749999999999945 ですよね?
> 3.01666666666666666 * 825 なら、2488.7499999999999945 ですけれども。
>
>
> Dim aa As Decimal
> Dim bb As Decimal
> aa = 3.01666666666666666D
> bb = aa * 825D
> Debug.Print("{0:0.0000000000000000}", bb)


すみません。
以下の計算をした場合、自動でbbの値が2488.8になってしまいます。
少数点以下を丸めない方法で下記のように計算したいのですが
方法はありますか?
> Dim aa As Decimal
> Dim bb As Decimal
> Dim cc As Decimal

> aa = 3.01666666666666666D
> bb = aa * 825D
 cc = bb / 29000 ' bbは、2488.749999999999945
結果ccも
0.858189655まで求めたいのですが。







引用返信 編集キー/
■14087 / inTopicNo.4)  Re[3]: 小数点以下含む計算について
□投稿者/ 魔界の仮面弁士 (608回)-(2008/02/08(Fri) 20:35:53)
No14084 (とも さん) に返信
> 自動でbbの値が2488.8になってしまいます。

精度が問題になる場合は、(Double ではなく) Decimal を使うようにしてください。


>>aa = 3.01666666666666666D
>>bb = aa * 825D
> cc = bb / 29000  ' bbは、2488.749999999999945

 Double 型の 29000  ではなく、
Decimal 型の 29000D で割りましょう。

> 結果ccも
> 0.858189655まで求めたいのですが。

その程度の桁数であれば、Decimal 型で処理できるかと。

(数十桁以上の計算まで必要な場合は、Decimal でも無理ですが…)

3.01666666666666666 * 825 / 29000 =
 0.08581 89655 17241 37912 06896 55172 41379 31034 48275 86206
   89655 17241 37931 03448 27586 20689 65517 24137 93103 44827
   58620 68965 51724 13793 10344 82758 62068 96551 72413 79310
   34482 75862 06896 55172 41379 31034 48275 86206 89655 17241
   37931 03448 27586 20689 65517 24137 93103 44827 58620 68965
   51724 13793 10344 82758 62068 96551 72413 79310 34482 75862
   06896 55172 41379 31034 48275 86206 89655 17241 37931 03448
   27586 20689 65517 24137 93103 44827 58620 68965 51724 13793
   10344 82758 62068 96551 72413 79310 34482 75862 06896 55172
   41379 31034 48275 86206 89655 17241 37931 03448 27586 20689
   65517 24137 93103 44827 58620 68965 51724 13793 10344 82758
   62068 96551 72413 79310 34482 75862 06896 55172 41379 31034
   48275 86206 89655 17241 37931 03448 27586 20689 65517 24137
   93103 44827 58620 68965 51724 13793 10344 82758 62068 96551
   72413 79310 34482 75862 06896 55172 41379 31034 48275 86206
   89655 17241 37931 03448 27586 20689 65517 24137 93103 44827
   58620 68965 51724 13793 10344 82758 62068 96551 72413 79310
   34482 75862 06896 55172 41379 31034 48275 86206 89655 17241
   37931 03448 27586 20689 65517 24137 93103 44827 58620 68965
   51724 13793 10344 82758 62068 96551 72413 79310 34482 75862
   (以下略)

引用返信 編集キー/
■14089 / inTopicNo.5)  Re[4]: 小数点以下含む計算について
□投稿者/ Jitta on the way (26回)-(2008/02/08(Fri) 20:42:41)
有効な範囲は、参考にしてください。
http://blogs.wankuma.com/jitta/archive/2005/11/22/19516.aspx
引用返信 編集キー/
■14092 / inTopicNo.6)  Re[4]: 小数点以下含む計算について
□投稿者/ とも (8回)-(2008/02/08(Fri) 20:55:29)
No14087 (魔界の仮面弁士 さん) に返信
> ■No14084 (とも さん) に返信
>>自動でbbの値が2488.8になってしまいます。
>
> 精度が問題になる場合は、(Double ではなく) Decimal を使うようにしてください。
>
>
> >>aa = 3.01666666666666666D
> >>bb = aa * 825D
>>cc = bb / 29000 ' bbは、2488.749999999999945
>
> Double 型の 29000 ではなく、
> Decimal 型の 29000D で割りましょう。
>
>>結果ccも
>>0.858189655まで求めたいのですが。
>
> その程度の桁数であれば、Decimal 型で処理できるかと。
>
> (数十桁以上の計算まで必要な場合は、Decimal でも無理ですが…)
>
> 3.01666666666666666 * 825 / 29000 =
> 0.08581 89655 17241 37912 06896 55172 41379 31034 48275 86206
> 89655 17241 37931 03448 27586 20689 65517 24137 93103 44827
> 58620 68965 51724 13793 10344 82758 62068 96551 72413 79310
> 34482 75862 06896 55172 41379 31034 48275 86206 89655 17241
> 37931 03448 27586 20689 65517 24137 93103 44827 58620 68965
> 51724 13793 10344 82758 62068 96551 72413 79310 34482 75862
> 06896 55172 41379 31034 48275 86206 89655 17241 37931 03448
> 27586 20689 65517 24137 93103 44827 58620 68965 51724 13793
> 10344 82758 62068 96551 72413 79310 34482 75862 06896 55172
> 41379 31034 48275 86206 89655 17241 37931 03448 27586 20689
> 65517 24137 93103 44827 58620 68965 51724 13793 10344 82758
> 62068 96551 72413 79310 34482 75862 06896 55172 41379 31034
> 48275 86206 89655 17241 37931 03448 27586 20689 65517 24137
> 93103 44827 58620 68965 51724 13793 10344 82758 62068 96551
> 72413 79310 34482 75862 06896 55172 41379 31034 48275 86206
> 89655 17241 37931 03448 27586 20689 65517 24137 93103 44827
> 58620 68965 51724 13793 10344 82758 62068 96551 72413 79310
> 34482 75862 06896 55172 41379 31034 48275 86206 89655 17241
> 37931 03448 27586 20689 65517 24137 93103 44827 58620 68965
> 51724 13793 10344 82758 62068 96551 72413 79310 34482 75862
> (以下略)

丁寧にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -