首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#双到浮点转换问题

C#双到浮点转换问题
EN

Stack Overflow用户
提问于 2022-08-02 18:39:04
回答 1查看 51关注 0票数 1

谢谢你读这篇文章。

c#中的浮点数范围为+- 3.4 * 10^38,双1.7 ^308考虑以下程序:

代码语言:javascript
复制
using System;

double nice;
float wow;
nice = 1.50* Math.Pow(10,300);
wow = (float) (nice);

Console.WriteLine(nice);
Console.WriteLine(wow);

output: 
1,5E+300
8

这让我很困惑,怎么能把这么大的一个数字转换成8作为一个浮动呢?当我们把双浮点数转换成浮点数时,浮点数的尾数为23位,指数为8位,双52位,11位。所以当我从双位转换为浮点数时,数字是那么大,这意味着浮点数的指数部分只有8位,因此是溢出。其他的3位只是为了防止这么多的“被滑掉”,还是会发生什么?

同样,当我对一个(int)做同样的事情时,它也给了我一个非常奇怪的反应。

,有人能解释一下为什么这是我得到的响应吗?当双倍的指数部分太大而不适合浮动?时,什么时候会发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 18:45:26

它没有转换为8 (8)。它被转换成无穷大,它的表示形式()看起来像一个侧面的8。由于字体或区域性设置,无论您在哪个环境中查看输出,都有可能像8一样显示输出。

具体来说,是PositiveInfinity,它的文档澄清了:

当操作的结果大于MaxValue时,返回此常量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73212265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档