bhq*_*asx 3 floating-point fortran
例如,我不理解FRACTION()的输出
write(*,*) fraction(553.334)
Run Code Online (Sandbox Code Playgroud)
它给了我0.5403652.
我认为它应该返回0.334,就像553.334-floor(553.334)那样.我的理解有什么问题?
相反,该值恰好(在可用精度范围内)正确答案.我认为错误是你误解了什么fraction.要(在网上广泛使用,因为很多教程和其他指南)套用标准fraction(x)返回的小数部分模型表示的x.x在大多数现代计算机上,模型表示是一种形式x*2^-k.实际上x,在您的示例中,函数返回的数字除以下一个最大幂2 553.034/1024 == 553.034*2^-10.
与计算机一样,RTFM(阅读Fortran手册).
fraction()不会做你认为它做的事情.它返回模型编号的小数部分(基数2).所以对于你的例子它返回:
553.334/1024 = 0.5403652
Run Code Online (Sandbox Code Playgroud)
与往常一样,如有疑问,请阅读文档.
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |