Почему разбор строки со значением с плавающей запятой дает мне число с большим количеством цифр после точки - PullRequest
2 голосов
/ 10 июня 2019

У меня есть следующий код

app.First.SelectToken("averageScore")?.ToString() 

Разбор json с помощью библиотеки Newtonsoft.

Вот результат

"4,8"

Но когда я пытаюсь удвоить его, я получаю следующий результат:

"+4,7999999999999998"

Код:

double.Parse(app.First.SelectToken("averageScore")?.ToString()) 

Но мне нужен двойной 4,8. Как получить его? Для десятичной такой способ работы хорош. Но мне нужен двойной.

1 Ответ

3 голосов
/ 10 июня 2019

Это та же проблема, что и у вас, когда вы пытаетесь представить число 1/3 как десятичное: вы не можете сделать это точно. В этом случае десятичное значение .8 не имеет точного представления в base-2, и в результате вы получите несовершенное приближение. Вы можете немного лучше использовать тип decimal, но вам все же нужно быть осторожным.

...