打印
[应用相关]

如何在64位XP下得到1.234

[复制链接]
454|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dingy|  楼主 | 2017-7-25 23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

实验目的:将整数1234,转换为1.234
使用环境:KEIL4.7
试验函数:采用如下函数
float READ_EEPROM_float11()
{
        int tmp;
        float dat;

        tmp = 1234;
        dat=(float)((float)tmp/1000);
        return (float)dat;
}
试验结果:
1、在32位XP系统下,得出dat=1.234
2、在64位WIN8下得出dat=1.2399997


请问,如何在64位XP下得到1.234
沙发
pengf| | 2017-7-25 23:16 | 只看该作者


1.234无法用float准确表示。

使用特权

评论回复
板凳
renyaq| | 2017-7-25 23:19 | 只看该作者
你看到的区别只是显示前的格式化过程造成的区别。

使用特权

评论回复
地板
kangzj| | 2017-7-25 23:19 | 只看该作者

精确计算使用整型为妥

使用特权

评论回复
5
zwll| | 2017-7-25 23:20 | 只看该作者

这个没办法的;
改成DOUBLE也是一样;

使用特权

评论回复
6
dingy|  楼主 | 2017-7-25 23:21 | 只看该作者

那是不是就没办法解决呢,有人说使用共用体,但是我测试还不行,难道是方法问题吗

使用特权

评论回复
7
pengf| | 2017-7-25 23:22 | 只看该作者

还不知道32位和64位系统有这么大的影响,哪个应该是比较准确的呢

使用特权

评论回复
8
dingy|  楼主 | 2017-7-25 23:23 | 只看该作者

哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
9
houcs| | 2017-7-25 23:24 | 只看该作者

转换为数组中的值,然后加个小数点位,这样处理比较快。

使用特权

评论回复
10
dingy|  楼主 | 2017-7-25 23:25 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝