如何在 C# 中设置值 float?

how to set value float in C#?

我想将 20770897 设置为 C# 浮点类型,但已更改为 20770896!为什么?

例如:

float test = 20770897;

值自动更改为 20770896?请帮助。 我正在从网络服务中获取 ID。这些是 return 浮点值,但它不是网络服务方法的真实值!

float (System.Single) is only 7 significant digits

的精度

这是一个舍入误差,这些在 32 位浮点类型的非常大或非常小的值中很常见。如果需要浮点支持,请使用更精确的类型,例如 double。如果您不明确需要浮点支持,我建议使用 intlonguintulong 来存储值(看起来是整数值) .

http://en.wikipedia.org/wiki/Round-off_error

问题是舍入错误之一 - 由于值在幕后存储的精确方式,非整数类型不能将某些值字符串化,而是会略高于或低于实际值。当 舍入 截断 时,这可能会导致明显的错误,您应该仔细确定使用哪个 - 大概,您的代码正在生成 20770896.99999...并在打印时截断为 20770896。

请注意,您的值越高,错误就越频繁。如果您需要更高的准确性,请考虑使用 double 甚至 decimal 类型。