・除算はオペランドの型に注意する
int / int = int
double / int = double
int / double = double
・浮動小数点型の演算に注意する
浮動小数点の見た目は10進数だけど、内部では2進数なので誤差が生じる。
ので、doubleではなくdecimalにすることで精確になる。
しかし、
・扱える値の範囲が狭くなる
・処理が低速
というデメリットがある。
ので結局、演算はintで行い、最後につじつま合わせ(10で除算したり)して誤差を防ぐのが良い?
using System;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
// int / int = int
Console.WriteLine(3 / 4); // OUTPUT: 0
// double / int = double
Console.WriteLine(3d / 4); // OUTPUT; 0.75
Console.WriteLine(0.2 * 3); // OUTPUT: 0.6
Console.WriteLine(0.2 * 3 == 0.6); // OUTPUT: False
Console.WriteLine((2 * 3) / 10d == 0.6); // True
}
}
}