Проблема с точность float при вычислениях
Вот простой пример.
float number = 0.9f;
number -= 0.1f;
// ВЫВОД: number = 0,79999995
Мне нужно получить 0,8. Как решить проблему с точностью?
Ответы (2 шт):
Автор решения: Maxim Kostenko
→ Ссылка
Используйте вместо float decimal
decimal number = 0.9m;
number -= 0.1m;
Console.WriteLine(number);
Автор решения: CrazyElf
→ Ссылка
Поскольку 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