【发布时间】:2018-08-21 08:04:54
【问题描述】:
我有一个数据框
df = pd.DataFrame(data=np.arange(10),columns=['v']).astype(float)
如何确保v 中的数字是整数?
我非常关心舍入/截断/浮点表示错误
【问题讨论】:
-
整数测试将如何减轻对浮点错误的担忧?这些值是否来自整数,您是否担心它们已经改变?或者它们是计算的结果,其数学特性使得精确的结果是整数?
-
这些值来自整数。然而,在处理过程中,它们经常被转换为 float64
-
在处理浮点整数时唯一可能发生的错误是从一种格式转换为另一种格式时的舍入和溢出错误。将整数转换为浮点时,如果精度不足以准确表示该值,则会对其进行四舍五入。但是,由于浮点的性质,它将被四舍五入的值将是另一个整数。因此,测试数组中的所有值是否都是整数将不会提供有关是否发生任何舍入错误的信息。
-
如果任务是确保从整数转换为浮点的值不会产生任何舍入误差,那么只要没有整数超过浮点格式的有效数字的精度就足够了。例如,IEEE 754 基本 64 位二进制具有 53 位有效位,因此任何整数的转换幅度高达 2^53 都不会产生任何舍入误差。
标签: python pandas floating-point precision