如何在 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
。如果您不明确需要浮点支持,我建议使用 int
、long
、uint
或 ulong
来存储值(看起来是整数值) .
问题是舍入错误之一 - 由于值在幕后存储的精确方式,非整数类型不能将某些值字符串化,而是会略高于或低于实际值。当 舍入 与 截断 时,这可能会导致明显的错误,您应该仔细确定使用哪个 - 大概,您的代码正在生成 20770896.99999...并在打印时截断为 20770896。
请注意,您的值越高,错误就越频繁。如果您需要更高的准确性,请考虑使用 double
甚至 decimal
类型。
我想将 20770897 设置为 C# 浮点类型,但已更改为 20770896!为什么?
例如:
float test = 20770897;
值自动更改为 20770896?请帮助。 我正在从网络服务中获取 ID。这些是 return 浮点值,但它不是网络服务方法的真实值!
float
(System.Single
) is only 7 significant digits
这是一个舍入误差,这些在 32 位浮点类型的非常大或非常小的值中很常见。如果需要浮点支持,请使用更精确的类型,例如 double
。如果您不明确需要浮点支持,我建议使用 int
、long
、uint
或 ulong
来存储值(看起来是整数值) .
问题是舍入错误之一 - 由于值在幕后存储的精确方式,非整数类型不能将某些值字符串化,而是会略高于或低于实际值。当 舍入 与 截断 时,这可能会导致明显的错误,您应该仔细确定使用哪个 - 大概,您的代码正在生成 20770896.99999...并在打印时截断为 20770896。
请注意,您的值越高,错误就越频繁。如果您需要更高的准确性,请考虑使用 double
甚至 decimal
类型。