加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于数据丢失的警告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),那么数据如何
我对可能的数据丢失有一个温和的警告

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 floatn",i,ivalue);
 }
}

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读