C# 浮点精度在float.Parse中丢失
现在C# 浮点精度在float.Parse中丢失,c#,.net,parsing,floating-point,C#,.net,Parsing,Floating Point,现在s的值为10499.97 有没有办法保存所有的精确数字?您应该尝试使用十进制 您应该尝试使用十进制 尝试使用精度高于float的数据类型,例如double。由于数据类型float的大小,值的其余数字被截断: float s = float.Parse("10499.9705314636"); 印刷品: 10499.9705314636 尝试使用精度高于float的数据类型,例如double。由于数据类型float的大小,值的其余数字被截断: float s = float.Parse("1
s
的值为10499.97
有没有办法保存所有的精确数字?您应该尝试使用
十进制
您应该尝试使用十进制
尝试使用精度高于float
的数据类型,例如double
。由于数据类型float
的大小,值的其余数字被截断:
float s = float.Parse("10499.9705314636");
印刷品:
10499.9705314636
尝试使用精度高于
float
的数据类型,例如double
。由于数据类型float
的大小,值的其余数字被截断:
float s = float.Parse("10499.9705314636");
印刷品:
10499.9705314636
你可能想调查一下这个问题。请特别注意二进制浮点类型和十进制浮点类型之间的差异。十进制数据类型很可能就是您在这里要查找的数据类型,因为float没有足够的有效数字来存储您试图准确解析的数字。您可能需要查看数据类型。请特别注意二进制浮点类型和十进制浮点类型之间的差异。Decimal数据类型很可能就是您在这里寻找的,因为float没有足够的有效数字来存储您试图准确解析的数字。使用
double
或Decimal
。Decimal甚至可以保留尾随的零,而double
可以提供更好的精度。如果你在处理货币问题,十进制是必须的,不要使用float
,不。因为,float
大约有7位精度。相关:还要注意的是double
计算速度更快,但会出现舍入错误。@PanagiotisKanavos,decimal
比double
精度更高。。或者你是说在你的评论中,Double
比Float
更精确?使用Double
或decimal
。Decimal甚至可以保留尾随的零,而double
可以提供更好的精度。如果你在处理货币问题,十进制是必须的,不要使用float
,不。因为,float
大约有7位精度。相关:还要注意的是double
计算速度更快,但会出现舍入错误。@PanagiotisKanavos,decimal
比double
精度更高。。或者你是说在你的评论中,Double
比Float
更精确?天哪,我现在还不知道这一点。谢谢你,天哪,我现在还不知道。非常感谢。