永发信息网

VC++编译时提示 从“double”到“float”截断 那“截断”是什么意思?

答案:5  悬赏:60  手机版
解决时间 2021-01-17 18:55
  • 提问者网友:献世佛
  • 2021-01-16 23:32
VC++编译时提示 从“double”到“float”截断 那“截断”是什么意思?
最佳答案
  • 五星知识达人网友:深街酒徒
  • 2021-01-17 00:05
在当前的计算机中,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 (从double转成float,可能会造成数据丢失)
因此,数据间赋值一定要采用正确的类型,建议在使用浮点数时,只使用double类型。
全部回答
  • 1楼网友:鱼忧
  • 2021-01-17 02:32
该说的前面两位都说了
呵呵 我就帮顶一下吧
  • 2楼网友:荒野風
  • 2021-01-17 02:24
double 是64位8个字节...float是32位4个字节。。因此从double转成float会被截取高位的32位。。
  • 3楼网友:轮獄道
  • 2021-01-17 02:13
#define PI 3.1 这句最后加个f就OK了 #define PI 3.1f
r=5.0f;
  • 4楼网友:零点过十分
  • 2021-01-17 00:47
就是数据有流失,C、C++的类型是对应的内存地址的,16位机中float是2字节,double是4字节所以,复制过程中,低位就会被会略了,编译器会提示类型转换的警告,解决方法就是,1,定义成一致的变量2,对FLOAT强制转换成DOUBLE,祝你顺利
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯