长的适合双吗?两者都有 8 个字节,但也许有一些我不知道的细微差别?
莫非是long转换成double后,反向转换就不对了?
添加
任务,以 Double 格式保存日期。我将 DateTime.Ticks 转换为双精度格式,并将其与文件中对应的数据数组一起保存为位。像这样的东西:日期值值日期值值日期值值日期值值
这里有可能崩溃吗?日期不超过当前日期(嗯,它每天增加)并且不少于 2000
长的适合双吗?两者都有 8 个字节,但也许有一些我不知道的细微差别?
莫非是long转换成double后,反向转换就不对了?
任务,以 Double 格式保存日期。我将 DateTime.Ticks 转换为双精度格式,并将其与文件中对应的数据数组一起保存为位。像这样的东西:日期值值日期值值日期值值日期值值
这里有可能崩溃吗?日期不超过当前日期(嗯,它每天增加)并且不少于 2000
不。显然,在同样大小的情况下,这是不可能的。有相同的卷,它
long
存储没有冗余的数字(即每个位组合对应一个唯一的数字)。不增加体积,就不可能保存新的值(都是小数,甚至只多一个小数,比如0.5)。并且由于已知 double 可以存储超过 long 的值,很明显它不能存储所有 type 的值long
。double
可以精确存储整数,包括 2**53(模数)。在此范围内,转换将是准确的,并且计算也仅适用于整数。一旦超出此范围,最低有效位就会开始丢失。https://ideone.com/HSBgd5
相反,
08
输出的是10
一个斜面输出,实际上存储了带有八的值。并且数据丢失了。我可以自己检查一下:https ://ideone.com/knqMBs
double 的确切范围涵盖了直到 0029 年(不是 2029 年,而是 00 - 大约 2000 年前)的年份。对于现代日期,您会丢失大约 7 个最后位。
或者像这样:https ://ideone.com/UvZfic
顺便说一句,一个有趣的事实:VB6、VBA 和 MS Office 使用双精度来存储日期,但它们的做法不同:整数部分是从倒计时开始的天数,小数部分是时间。自然,与滴答声相比,准确性仍然受到影响。
关于该主题的有趣材料:
你需要这样的错误吗?