Особенности выполнения операций над целочисленными операндами и операндами с плавающей точкой связаны с особенностями выполнения арифметических операций и с ограниченной точностью переменных типа float и double.
Представление величин:
float – 7 значащих цифр.
double – 16 значащих цифр.
1000000*100000==1000000000000, но максимально допустимое положительное значение для типа System.Int32 составляет 2147483647. В результате переполнения получается неверный результат -727379968.
Ограниченная точность значений типа System.Single проявляется при присвоении значений переменной типа System.Double. Приводимый ниже простой программный код иллюстрирует некоторые особенности арифметики .NET.
using System;
class Class1
{
const double epsilon = 0.00001D;
static void Main(string[] args)
{
int valI = 1000000, resI;
resI = (valI*valI)/valI;
// -727379968/1000000 == -727
Console.WriteLine("The result of action (1000000*1000000/1000000) is {0}", resI);
float valF00 = 0.2F, resF;
double valD00 = 0.2D, resD;
// Тест на количество значащих цифр для значений типа double и float.