我在.NET中有一个处理地理坐标的方法,还有一个结构体用于存储坐标对,以便如果一个坐标参数传入256,则变为0。然而,在一个特定的实例中,计算出一个值约为255.99999998,并因此存储在结构体中。当它在ToString()中打印时,它变成了256,这不应该发生 - 256应该是0。如果它打印255.9999998,我也无所谓,但调试器显示255.99999998时它打印256就是个问题。既存储又显示为0会更好。
具体来说,比较存在问题。255.99999998足够接近256,以至于它应该等于256。当比较双精度浮点数时,应该怎么办?使用某种ε值吗?
编辑:具体来说,我的问题是,我取一个值,执行一些计算,然后对该数字执行相反的计算,并且需要精确地返回原始值。