python - CPP和Python CSV Precision

标签 python c++ precision

希望如此,我可以第一次发帖,告诉我我想问的问题。
我有cpp代码,可记录从fpga向下到纳秒级的时间戳。它将此值写入CSV。在同一个csv中,我正在计算连续时间戳之间的差异。
当我将其导出到python并进行时间戳区别时,我得到的大多数都是1s(基于PPS),但也有随机的脉冲点。知道为什么我会在cpp中获得全1,但大多数情况下会得到1,偶尔还会有1 +-3E-14吗?
任何信息或指导,将不胜感激。通过使用搜索,似乎可能是由于浮点数引起的?但是这两者都不应该发生吗?

最佳答案

@tdelaney和user4581301的评论使人难以忘怀。看来这是由于python的float类型的精度所致。我将其替换为上述的decimal.Decimal,它保持了原始CSV的精度,并且计算数据时不进行舍入。
小数不依赖二进制分数,唯一的缺点是它比较慢(在我的情况下很好)。
我的cpp和python代码之间的区别在于,我的cpp代码以uint的形式进行数学运算,而我是手动计算它,而仅仅是A-B。

关于python - CPP和Python CSV Precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63019871/

相关文章:

python - dbus_to_python() 正好接受 1 个参数?

python - unittest.py 与 trace.py 配合不佳 - 为什么?

c++ - 使用 GTest 进行回调单元测试

java - double 被四舍五入而不精确

c - 为什么这段代码返回两个不同的值做同样的事情?

python - pyside 通过样式表设置背景图像不起作用

python - 有没有什么方法可以将一列 pandas 与其他每一列相乘并获得产品列表?

c++ - Windows 的原始鼠标输入

c++ - 在 Eigen 源中的哪个位置是为特定矩阵定义的 sum() 函数?

floating-point - 为什么我看到一个 double 变量初始化为某个值,例如 21.4 为 21.399999618530273?