Fortran IEEE 754双精度到单精度

Fortran IEEE 754双精度到单精度,fortran,Fortran,我想知道fortran 95(f95)如何转换指数大于单精度(SP)指数的双精度(DP) 假设我有一个DP数,其指数大于可以存储到SP数据类型中的指数。它只是最大化指数,切掉尾数,然后以这种方式存储,还是发生了其他事情 如果这是正确的,那么这是否意味着任何时候从DP到SP的指数太大,我会得到+或-无穷大(如果DP的尾数在前8位有零)和NaN(如果尾数的前8位中的任何一位是1) 非常感谢你的帮助 是的,如果您试图将双精度变量a存储到单个精度变量b,而a不在[-ground(b)、ground(b)

我想知道fortran 95(f95)如何转换指数大于单精度(SP)指数的双精度(DP)

假设我有一个DP数,其指数大于可以存储到SP数据类型中的指数。它只是最大化指数,切掉尾数,然后以这种方式存储,还是发生了其他事情

如果这是正确的,那么这是否意味着任何时候从DP到SP的指数太大,我会得到+或-无穷大(如果DP的尾数在前8位有零)和NaN(如果尾数的前8位中的任何一位是1)


非常感谢你的帮助

是的,如果您试图将双精度变量
a
存储到单个精度变量
b
,而
a
不在
[-ground(b)、ground(b)]
的范围内,
b
将变为
+Inf
-Inf
,具体取决于
a
的符号


这确实是一个理想的行为-一个捕获浮动溢出并极大地帮助调试的功能。

我想你会得到+/-无穷大。在我的例子中,它使用cvtpd2ps指令来进行转换。因此,基本上任何时候,双精度指数增加超过2^7-1=127,这会导致太大而无法用单精度指数表示,因此结果被设置为+或-无穷大,并且标志被提升[-巨大(b),巨大(b)]你是说允许的最小和最大指数吗?模糊地说,是的。巨型是一个Fortran内部函数,它返回任意精度变量的最大正值。刚开始使用Fortran,所以还不确定所有的形式。谢谢你的帮助!