C语言 四舍五入问题时,使用长长PIC



我正在PIC微控制器上做一个简单的数学运算,在C中运行代码并使用MPLABX和xc16编译器。这是代码:

double mydouble = 0.019440;
long long int mypower = 281474976710656;
long long int result = mypower*mydouble;

输出'result'得到5,471,873,794,048;而它应该给出5,471,873,547,255。你知道是什么导致了这个问题,我该如何纠正它吗?

谢谢

xc16默认将double和float处理为32位数据类型。你需要给编译选项-fno-short-double来使用64位双精度。

您也可以使用long double作为数据类型,但我目前无法编译来验证这一点。

(作为测试,5,471,873,794,048也正是您在x86上使用float而不是double编译示例代码的结果)

相关内容

  • 没有找到相关文章

最新更新