От: | StatujaLeha | на правах ИМХО | |
Дата: | 03.11.19 20:42 | ||
Оценка: |
using System;
class MainClass {
public static void Main (string[] args) {
float v = 0.0f;
for (int i = 0; i < 1000; ++i)
{
v += 0.001f;
float v1 = v * 1000;
float v2 = v1 / 1000;
if (v2 != v)
{
var dv = Convert.ToDecimal(v);
var dv2 = Convert.ToDecimal(v2);
Console.WriteLine($"{v} - {v2}, {(dv - dv2) == 0}");
}
}
}
}
Mono C# compiler version 4.6.2.0
mcs -out:main.exe main.cs
mono main.exe
0.034 — 0.034, True
0.04299998 — 0.04299999, False
0.05199997 — 0.05199996, False
0.1240001 — 0.1240001, True
0.2050002 — 0.2050003, False
0.2200003 — 0.2200003, True
0.2350003 — 0.2350003, True
0.279 — 0.279, True
0.2979997 — 0.2979997, True
0.3429991 — 0.3429992, False
0.3619989 — 0.3619989, True
0.4069983 — 0.4069983, True
0.4259981 — 0.425998, False
0.4709975 — 0.4709975, True
0.4899972 — 0.4899972, True
0.5929959 — 0.592996, False
0.6119957 — 0.6119958, False
0.6309955 — 0.6309954, False
0.7209943 — 0.7209944, False
0.739994 — 0.739994, True
0.7589938 — 0.7589937, False
0.8489926 — 0.8489927, False
0.8679924 — 0.8679925, False
0.8869922 — 0.8869921, False
0.976991 — 0.9769911, False
0.9959908 — 0.9959907, False