Это задокументировано здесь :
Когда спецификатор точности управляет количеством дробных цифр в строке результата, строка результата отражает число, которое округляется до представимого результата, ближайшего к бесконечности точный результат. Если есть два одинаково близких к представлению результата:
- На. NET Framework и. NET Core до. NET Core 2.0, среда выполнения выбирает результат с большим наименее значимым di git (то есть с использованием
MidpointRounding.AwayFromZero
). - Вкл. NET Core 2.1 и более поздних версий среда выполнения выбирает результат даже с наименьшим значащим di git (то есть с использованием
MidpointRounding.ToEven
).
Обратите внимание, что double
- это тип с плавающей двоичной точкой. Они представлены в двоичной системе (например, 11010.00110). Когда double представлено в десятичной системе, это только приближение, поскольку не все двоичные числа имеют точное представление в десятичной системе.