gpt4 book ai didi

c - 在 PIC 上使用 long long 时出现舍入问题

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:00 24 4
gpt4 key购买 nike

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

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

long long int result = mypower*mydouble;

打印“结果”得到 5,471,873,794,048;而它应该给出 5,471,873,547,255。知道是什么导致了这个问题,我该如何纠正它?

谢谢

最佳答案

xc16 默认将 double 和 float 作为 32 位数据类型处理。您需要提供编译选项 -fno-short-double 才能使用 64 位 double 。

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

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

关于c - 在 PIC 上使用 long long 时出现舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22412584/

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