同一段代码,在嵌入式系统上和PC上运行的结果不一致,如何处理?请大神指教

MiskyLiao 2017-07-23 10:03:02
如下一段代码,在PC上运行完全正确,但移值到ARM上,
结果却不一致,出现了错误。不知道错误在哪里?



float r,g,b;
float x,y,z;
float xx,yy;
// 对r, g, b进行赋值
r=220,
g=20;
b=15;

r/=255.0f;g/=255.0f;b/=255.0f;

if(r<=0.04045) r=r/12.92f;
else r=float(pow(((r+0.055)/1.055),2.4));

if(g<=0.04045) g=g/12.92f;
else g=float(pow(((g+0.055)/1.055),2.4));

if(b<=0.04045) b=b/12.92f;
else b=float(pow(((b+0.055)/1.055),2.4));

x = 41.24f * r + 35.76f * g + 18.05f * b;
y = 21.26f * r + 71.52f * g + 7.2f * b;
z = 1.93f * r + 11.92f * g + 95.05f * b;
...全文
360 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiskyLiao 2017-08-05
  • 打赏
  • 举报
回复
pow在两个参数都是浮点数的时候运行结果不一致,不知道是什么原因?
dceacho 2017-07-24
  • 打赏
  • 举报
回复
在ARM上你改成double类型试试看
侦探蜡笔小新 2017-07-24
  • 打赏
  • 举报
回复
具体如何不一致? 具体找BUG建议: 0,检测相同变量类型所占字节数是否相同,不同尝试修改变量类型 1,只运行一行浮点运算,检查结果是否一致 2,编写测试代码,单独检查float()和pow()运算结果是否一致

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧