Я пытаюсь понять практическую полезность спецификатора формата G9 в C# при работе с числами с плавающей запятой в обратном направлении.
Книга C#12 в двух словах упоминает, что G9 помогает избежать потери точности при преобразовании числа с плавающей запятой в строку и обратно в число с плавающей запятой (стр. 324). Но я не могу найти пример, показывающий случай, когда форматирование G9 позволяет сохранить равенство, а форматирование по умолчанию не работает.
Например:
using System;
class Program
{
static void Main()
{
float originalNumber = 0.1f;
string defaultFormatted = originalNumber.ToString();
float defaultRoundTrip = float.Parse(defaultFormatted);
Console.WriteLine("Default Formatting:");
Console.WriteLine("Original: " + originalNumber);
Console.WriteLine("Formatted: " + defaultFormatted);
Console.WriteLine("Round-trip Equal: " + (originalNumber == defaultRoundTrip));
string g9Formatted = originalNumber.ToString("G9");
float g9RoundTrip = float.Parse(g9Formatted);
Console.WriteLine("\nG9 Formatting:");
Console.WriteLine("Original: " + originalNumber);
Console.WriteLine("Formatted: " + g9Formatted);
Console.WriteLine("Round-trip Equal: " + (originalNumber == g9RoundTrip));
}
}
Дает мне
Default Formatting:
Original: 0.1
Formatted: 0.1
Round-trip Equal: True
G9 Formatting:
Original: 0.1
Formatted: 0.100000001
Round-trip Equal: True
Я ожидал чего-то подобного:
Default Formatting:
Original: 0.1
Formatted: 0.100000000001
Round-trip Equal: False
G9 Formatting:
Original: 0.1
Formatted: 0.1
Round-trip Equal: True
Подробнее здесь: https://stackoverflow.com/questions/791 ... nd-trippin
Пример полезности спецификатора формата G9 в C# для округления чисел с плавающей запятой? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Пример полезности спецификатора формата G9 в C# для округления чисел с плавающей запятой?
Anonymous » » в форуме C# - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Усечение чисел с плавающей запятой до int на x86 и x86_64 имеет разную ошибку округления
Anonymous » » в форуме C++ - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Усечение чисел с плавающей запятой до int на x86 и x86_64 имеет разную ошибку округления
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Усечение чисел с плавающей запятой до int на x86 и x86_64 имеет разную ошибку округления
Anonymous » » в форуме C++ - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-