gpt4 book ai didi

r - float 在符合IEEE754的不同系统中是否相同?

转载 作者:行者123 更新时间:2023-11-29 12:02:51 25 4
gpt4 key购买 nike

这与我最近的问题有关:What can I do about the difference between real numbers in R versus PostgreSQL?

我对精度问题和 IEEE754 标准知之甚少。我读了这个link ,我从中引用(强调我的):

Because of its wide use, the format used to store Floating Point numbers in memory has been standardized by the Institute of Electrical and Electronic Engineers in something called IEEE 754.

对我来说,这意味着如果我在符合标准的两个不同系统中,数字 4104.694 应该相等。然而,从我之前的问题来看,RPostgres 似乎以不同的方式表示这个数字:

des_num <- 4094.694
sprintf("%.64f", des_num)
# "4094.6939999999999599822331219911575317382812500000000000000000000000"
psql_num <- RPostgreSQL::dbGetQuery(con, "select 4104.694;")
sprintf("%.64f", psql_num)
# [1] "4104.6940000000004147295840084552764892578125000000000000000000000000"

我是否应该期望相同的 float 在符合标准的不同系统中以完全相同的方式存储?

最佳答案

我不知道 R 是否有精确的数字类型,但 Postgres 肯定有。 REALDECIMAL 列类型都提供精确的精度,see here .如果您使用 Postgres 作为脚本背后的数据存储,那么如果您使用实数或小数,您应该能够从 R 中存储一些东西,并在以后检索完全相同的东西。

关于r - float 在符合IEEE754的不同系统中是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47386275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com