关于taichi全局数据精度的疑问

import taichi as ti

ti.init(arch=ti.cpu,default_fp=ti.f32)

x = ti.field(dtype=ti.f32, shape=())

y = ti.field(dtype=ti.f32, shape=())

@ti.kernel

def convert_and_assign():

y[None] = ti.cast(3.14, ti.f32)

#设置 x 的值为一个 f32 浮点数

x[None] = 3.141592

#调用类型转换和赋值的核函数

convert_and_assign()

#输出全局变量 x,y 的值

print(x[None]) # 3.141592025756836

print(y[None]) # 3.140000104904175

为什么输出的值不是3.141592和3.140000呢?

道理很简单,因为 fp32 表示不出准确的 3.141592 和 3.14。你看到的输出值就是 fp32 中实际表示为的值。

明白了,我对精度的理解不够,谢谢您