在内核中:我正在读取类型为 extern s64 Latency;
在用户空间:
extern double latency;
//fp is reading the kernel value (i.e Latency)
fscanf (fp,"%lf", latency);
如果我从内核读取 s64 作为用户空间中的 double 。有没有数据丢失的可能?? 我应该使用哪种数据类型来获取完整的值?
最佳答案
简短的回答:是的,肯定会丢失数据。
想一想,有符号 64 位整数 (s64
) 和 double
都有 64 位存储空间。但是 s64 只关心整数,而 double 也可以表示分数。为此,它需要利用某些位来获取此信息,因此它无法表示完整范围的 64 位整数。
您应该使用工具链的 stdint.h
中的 int64_t
。
关于C 程序从 s64 到 double 的转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23602887/