[問題]0.1を100回たすと?
の解答編です。
まぁ、答えはたくさんあるんですが、
こんなのもありますぜ。ということで解答例
そもさん~
Q.0.1 を 100 回たして答えが 10.0 になるプログラムを書いてください。
A. 解答例。数値にリテラルを指定しないとデフォルトで倍精度として扱います。
【VB】以下の2つのデータ型でくらべてみてね。
Option Strict On の環境でおこなってください。
Module Module1
Sub Main()
Dim d1 As Double
Dim d2 As Decimal
d1 = 0.0# '0.0R でもOK
d2 = 0.0@ '0.0D でもOK
For index As Integer = 1 To 100
d1 += 0.1#
d2 += 0.1@
Next
Console.WriteLine(d1)
Console.WriteLine(d2)
End Sub
End Module
実行結果
9.99999999999998
10.0
【C#】以下の2つのデータ型を比べてみてね。
VBの場合と同様、数値にリテラルを指定しないとデフォルトで倍精度として扱います。
だだし、VBとキーワードが異なります。ヤヤコシス。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplicationCS
{
class Program
{
static void Main(string[] args)
{
double d1;
decimal d2;
d1 = 0.0d;
d2 = 0.0m;
for (int i = 1; i <= 100; i++)
{
d1 += 0.1d;
d2 += 0.1m;
}
Console.WriteLine(d1);
Console.WriteLine(d2);
}
}
}
実行結果
9.99999999999998
10.0