2020年11月13日
川俣晶の縁側ソフトウェアC# コーディング How To total 1173 count

【入門級】整数計算だけで1.2倍を計算する

Written By: 川俣 晶連絡先

 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

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?