关于数据丢失的警告c / c

前端之家收集整理的这篇文章主要介绍了关于数据丢失的警告c / c前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对可能的数据丢失有一个温和的警告

warning C4244: ‘argument’ : conversion from ‘const int’ to ‘float’,possible loss of data

我记得,如果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 float\n",i,ivalue);
 }
}

你会很快看到有数千个整数不能被表示为浮点数.例如,16,777,219和16,221之间的所有整数表示为16,220.

再次编辑运行上面的程序表示有2,071,986,175个正整数,不能精确地表示为浮点数.这让你大概只有一亿正则整数适合浮动.这意味着当将它放入浮点数时,只有21中的整数是正确的.

我预计数字对于负整数是相同的.

猜你在找的C&C++相关文章