float怎么转换为double解决“从double转换到float,可能丢失数据”?

在当前的计算机中double类型存储占8芓节,float类型存储占4字节当两个不同类型的数据进行赋值时,系统进行隐式类型转换高精度向低精度的赋值时,低精度变量无法完整存儲高精度数据系统会自动“截断”部分内容,完成数据转存这样就有可能会造成数据精度丢失。

就是数据有流失C、C++的类型是对应的內存地址的,16位机中float是2字节double是4字节所以,复制过程中低位就会被会略了,编译器会提示类型转换的警告解决方法就是,1定义成一致的变量2,对FLOAT强制转换成DOUBLE祝你顺利

你对这个回答的评价是?

你对这个回答的评价是

你对这个回答的评价是?

}

double型与float型之间的相互转换问题 [问题點数:10分结帖人bjlny]

我做的单片机项目,目前遇到这样一个问题:

单片机的C环境和普通桌面和服务器的C环境有着很大的区别觉得还是看相關的手册比较把稳

mlee79兄给出了代码,但是里边也存在问题:

最重要的是keil里边不支持double类型所有的double类型都是按照float类型进行存放的,所以不能定義double类型那是没有意义的。

不要考虑定义double类型因为如果可以的话,我就不存在这个问题直接定义公用体就可以了。

尽管在ANSI C中情况不再洳此但最初浮点数常量的精度都是double型的,所有表达式中float变量总被自动转换成double这样做的理由从未公诸于众,但它与PDP-11中浮点数的硬件表示方式有关首先,在PDP-11和VAX中从float转换成double的代价非常小,只要在后面增加一个每位均为0的字即可如果要转换回来,去掉第二个字就可以了其次,要知道在某些PDP-11的浮点数硬件表示形式中有一个位运算模式位(mod bit)你可以只进行float的运算,也可以只进行double的运算但如果想在这两种方式間切换,就必须修改这个位来改变运算模式

我是按照IEEE754标准实现转换,中间需要计算double型指数位底数不足部分填充0。

另外发现KEIL是大端模式VC6.0是小端模式。


结果一样的但是意思不一样

但因為指數應可正可負, 




mllee79兄看来也是对这个很熟悉的,发的还有代码并且一直积极参与讨论,多谢

匿名用户不能发表回复!
}

我要回帖

更多关于 float怎么转换为double 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信