|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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 于 2005/9/1 9:29:00 发布:
哦 楼主是如何知道存成 4.156342e+009 或存成 1.2e+013 ? 可以这样: float fre=12000000000000f 或 double fre=12000000000000; LONG fre=12000000000000; 再 prinf("1.0%f",fre); 我用的是 vc.net. |
3楼: | >>参与讨论 |
作者: liuding 于 2005/9/1 10:01:00 发布:
我用的是keil编译器 我用的是keil编译器, 编译运行后,在这句下面设个断点,通过local查看的。 你说的那几个方法,也不可以,不知道为什么? 郁闷.... |
4楼: | >>参与讨论 |
作者: twz8858877 于 2005/9/1 15:07:00 发布:
首先 12000000000000被转成长整形,然后再赋值给float fre,由于长整形表示范围只有四字节,故产生溢出错误。而12000000000000.0首先就被转成浮点数,再赋值给fre时就不会出现这种问题。 |
5楼: | >>参与讨论 |
作者: liuding 于 2005/9/1 16:06:00 发布:
to twz8858877 终于知道怎么回事了~ 刚才我试了一下,总算搞明白了, 谢谢~:) |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |