吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1046|回复: 4
收起左侧

[求助] double转float遇到问题

[复制链接]
Rodriguezs 发表于 2020-2-22 11:51
[C++] 纯文本查看 复制代码
#include <iostream>
using namespace std;

int main()
{
    double x = 2E50;
    float z = x;
    cout << z << endl; //输出结果为inf 编译环境为vs2015,不知为什么会产生这样的结果。

    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2020-2-22 12:09
double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308
FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 二进制指数和一个 23 位尾数。由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。此表示形式为 float 类型提供了一个大约在 -3.4E+38 ~ 3.4E+38 之间的范围。

以上取自百度百科,由上可见float无法表示2e50这么大的数字
 楼主| Rodriguezs 发表于 2020-2-22 12:28
苏紫方璇 发表于 2020-2-22 12:09
double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用  ...

控制台上居然输出z的值为inf,这点很奇怪,可能是编译器的警告吧?
nstar1221 发表于 2020-2-22 12:47
inf代表infinity,超出表示范围的意思,就是输出个结果,没啥好奇怪的

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Rodriguezs + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| Rodriguezs 发表于 2020-2-22 12:51
nstar1221 发表于 2020-2-22 12:47
inf代表infinity,超出表示范围的意思,就是输出个结果,没啥好奇怪的

原来如此,谢谢。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表