首页 > 解决方案 > 为什么解析具有浮点值的字符串会给我点后有大量数字的数字

问题描述

我有以下代码

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

Newtonsoft它在库的帮助下解析 json 。

这是结果

“4,8”

但是当我尝试将其转换为双倍时,我得到以下结果:

“4.7999999999999998”

代码:

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

但我需要双4.8。如何得到它?对于十进制,这种方式工作得很好。但我需要双倍。

标签: c#json.netdouble

解决方案


这与尝试将数字表示1/3为小数时遇到的问题相同:您不能精确地做到这一点。在这种情况下,.8十进制值没有以 2 为底的精确表示,因此您会得到一个不完美的近似值。使用该类型可能会做得更好decimal,但仍然需要小心。


推荐阅读