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

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

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

Re[1]: C#の初歩的な質問なのですが・・・(計算)


(過去ログ 12 を表示中)

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

■3175 / inTopicNo.1)  C#の初歩的な質問なのですが・・・(計算)
  
□投稿者/ ぷー (1回)-(2007/04/25(Wed) 11:30:48)

分類:[C# (Windows)] 

C#.NETのWinアプリで開発している超初心者です。

ある値aに対するもう1つ値bが占める割合を計算したいと思っており、下記のようなプログラムを書きました。

long a, b, atai;

a = 75000;
b = 3400;
atai = (b / a) * 100;

これを計算させるとataiには0が返ってきてしまいます。
オーバーフローを起こしているのかと思ってcheckedを使ってみたりしたのですが、それでもダメでした。
またataiのみdoubleにしたのですが、それでもダメでした。

どうすれば求めたい値を取得する事ができるのでしょうか??

かなり初歩的な質問だとは思うのですが、よろしくお願いいたします。

引用返信 編集キー/
■3176 / inTopicNo.2)  Re[1]: C#の初歩的な質問なのですが・・・(計算)
□投稿者/ Blue (298回)-(2007/04/25(Wed) 11:35:18)
> (b / a)
の計算結果がlongで帰ってくるからです。


(b * 1.0 / a)

または

((double)b / a)

というようにdobule型で計算させるってのはよく使う手です。
正確な値ならDecimalを使うのかな。
引用返信 編集キー/
■3177 / inTopicNo.3)  Re[2]: C#の初歩的な質問なのですが・・・(計算)
□投稿者/ επιστημη (496回)-(2007/04/25(Wed) 11:38:42)
επιστημη さんの Web サイト
# ゴミです。

タイトルで言い訳/泣き言を述べるのは好ましくありません。
「質問内容の要約」をタイトルとしてください。

引用返信 編集キー/
■3178 / inTopicNo.4)  Re[1]: C#の初歩的な質問なのですが・・・(計算)
□投稿者/ よねKEN (35回)-(2007/04/25(Wed) 11:45:33)
よねKEN さんの Web サイト
2007/04/25(Wed) 11:46:20 編集(投稿者)

longのような整数型の除算(/)の結果は、0に近くなるように丸められます。
つまり、正の整数同士の割り算では、小数以下は切り捨てられます。

> atai = (b / a) * 100;

Blueさんの回答にある方法以外に小数部が不要な場合であれば、

atai = (b * 100) / a;

のように計算順序を変えて対応することもできますね。



引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -