Вот простой пример.
float number = 0.9f;
number -= 0.1f;
// ВЫВОД: number = 0,79999995
Мне нужно получить 0,8. Как решить проблему с точностью?
Вот простой пример.
float number = 0.9f;
number -= 0.1f;
// ВЫВОД: number = 0,79999995
Мне нужно получить 0,8. Как решить проблему с точностью?
Используйте вместо float decimal
decimal number = 0.9m;
number -= 0.1m;
Console.WriteLine(number);
Поскольку 0.79999995 - это реальное значение переменной типа float в данном случае (ну, не умеет этот тип хранить числа с абсолютной точностью), то у вас один вариант - ограничить точность отображения переменной при выводе, тогда она округлится до нужного вам значения:
using System;
public class Program
{
public static void Main()
{
float number = 0.9f;
number -= 0.1f;
Console.WriteLine($"{number:f1}");
}
}
Вывод:
0.8
Ссылка на код на dotnetfiddle в среде .NET 5
float хранить не умеет, всегда будет приблизительное. Но обычно и такого хватает для обычных вычислений.
– CrazyElf
Nov 28 '20 at 10:57