c语言里conversion from 'double ' to 'float ', possible loss of...

发布网友 发布时间:2024-10-24 01:02

我来回答

2个回答

热心网友 时间:2024-10-24 04:54

conversion from 'double' to 'float', possible loss of data 

翻译:从double转成float,可能会造成数据丢失。


现在的计算机,double类型存储占8字节,float类型存储占4字节,当两个不同类型的数据进行赋值时,系统进行隐式类型转换,高精度向低精度的赋值时,低精度变量无法完整存储高精度数据,系统会自动“截断”部分内容,完成数据转存,这样就有可能会造成数据精度丢失。
在C/C++语言中,浮点型常数的默认类型是double类型,如0.5 ,123.45等,若想得到float类型常数,则要在常数后加f 字符,如:0.5f , 123.45f等
当把double类型数据赋值给float类型变量时,系统编译时会报以下警告:
warning C4244: '=' : conversion from 'double' to 'float', possible loss of data 

一般这种错误常见于:

用浮点常数给float类型变量赋值,如:float f=0.1 ;  正确写法为:float f=0.1f ;

调用返回值类型为double的函数,给float类型变量赋值,如:float f=pow(x,n);  pow返回参数x的n次幂。 正确写法:float f=powf(x,n); //调用正确的函数 

因此,数据间赋值一定要采用正确的类型,建议在使用浮点数时,只使用double类型。

热心网友 时间:2024-10-24 04:55

由高精度到低精度可能会有数据丢失,贴源码上来看看
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com