1.2倍を計算する場合、普通はa * 1.2のように書きます。
1.2はdouble型です。
しかし、double型やfloat型は誤差が多いので、できれば避けたいというケースもあります。
では整数型だけで1.2倍の計算はできるのでしょうか?
できます。
a*12/10でできます。
10倍大きな数を掛けてから10で割れば良いわけですね。
罠の数々 §
- 整数の計算に持ち込むと、桁数が溢れやすいので注意。たとえば、100を10倍して計算すると1000になり、これはbyte型の最大値255を越えてしまう
- 実数と計算した結果も実数になるのだが、整数だけで計算すると結果も整数になる。その結果、端数がある時小数点以下が残ったり残らなかったりして結果に相違が出る可能性がある
参考リンク §
整数数値型 (C# リファレンス)
浮動小数点数値型 (C# リファレンス)
算術演算子 (C# リファレンス)
整数を計算させたときと実数を計算させたときでは結果に差が出ることがある。上記のリンクからどんなときにどんな差が出るのか確認しておこう。それが思い通りの計算をさせる早道だ!
リポジトリ §
https://github.com/autumn009/cshowto
IntegerAndReal §
using System;
class Program
{
static void Main()
{
int a = 100;
// 実数で1.2倍する
Console.WriteLine(a * 1.2);
// 整数だけで1.2倍する
Console.WriteLine(a * 12 / 10);
}
}
実行結果
120
120