登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

一个浮点数的问题

作者:liuding 栏目:单片机
一个浮点数的问题
我定义了这样一个语句:
float fre=12000000000000;
但编译后,fre却存成4.156342e+009;
而如果我写成:
float fre=12000000000000.0;
fre就存成1.2e+013
这是为什么啊?
大家帮帮忙~

2楼: >>参与讨论
bbstom

楼主是如何知道存成 4.156342e+009 或存成  1.2e+013 ?
可以这样:
float fre=12000000000000f

或  
double fre=12000000000000;
LONG   fre=12000000000000;

prinf("1.0%f",fre);

我用的是 vc.net.

3楼: >>参与讨论
liuding
我用的是keil编译器
 我用的是keil编译器,
编译运行后,在这句下面设个断点,通过local查看的。
你说的那几个方法,也不可以,不知道为什么?
郁闷....

4楼: >>参与讨论
twz8858877
首先
12000000000000被转成长整形,然后再赋值给float fre,由于长整形表示范围只有四字节,故产生溢出错误。而12000000000000.0首先就被转成浮点数,再赋值给fre时就不会出现这种问题。

5楼: >>参与讨论
liuding
to twz8858877
终于知道怎么回事了~
刚才我试了一下,总算搞明白了,
谢谢~:)


参与讨论
昵称:
讨论内容:
 
 
相关帖子
p0口。。。。
74系列的片子哪些编号的可以在3.3和5V工作?
问个关于FLASH的问题?!
各位高人请救命!一个A/D转换的问题
keil的警告“RECURSIVE CALL TO SEGMENT”是怎么回事??
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号