关于数据丢失的警告c / c
发布时间:2020-12-16 03:12:06 所属栏目:百科 来源:网络整理
导读:我对可能的数据丢失有一个温和的警告 warning C4244: ‘argument’ : conversion from ‘const int’ to ‘float’,possible loss of data 题 我记得,如果float有比int更大的精度.那么如果我从较小的数据类型(int)转换为更大的数据类型(float),那么数据如何
我对可能的数据丢失有一个温和的警告
题 我记得,如果float有比int更大的精度.那么如果我从较小的数据类型(int)转换为更大的数据类型(float),那么数据如何丢失? 解决方法
因为浮点数不精确.即使浮点数的最大值高得多,也不能表示int可以持有到float中的每个可能的值.
例如,运行这个简单的程序: #include <stdio.h> int main() { for(int i = 0; i < 2147483647; i++) { float value = i; int ivalue = value; if(i != ivalue) printf("Integer %d is represented as %d in a floatn",i,ivalue); } } 你会很快看到有数千个整数不能被表示为浮点数.例如,16,777,219和16,221之间的所有整数表示为16,220. 再次编辑运行上面的程序表示有2,071,986,175个正整数,不能精确地表示为浮点数.这让你大概只有一亿正则整数适合浮动.这意味着当将它放入浮点数时,只有21中的整数是正确的. 我预计数字对于负整数是相同的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |