爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1417|回复: 3

[其他] ncl中整数乘法的疑问

[复制链接]

新浪微博达人勋

发表于 2023-6-27 16:54:22 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 蒙牛伊利特仑苏 于 2023-6-27 16:57 编辑

在编写NCL脚本时,假设nlat=207,nlon=252,dx=3000,dy=3000,计算area=nlat*nlon*dx*dy时(这意味着area、nlat、nlon、dx、dy均为整数变量),NCL计算得到1.324565e+09。如下图所示:
ncl.jpg
而在matlab中,计算area得到的结果是:
matlab.jpg
最后是matlab计算的结果正确,NCL的浮点运算结果也与之一致。但是有一个疑问,ncl的整数乘法为什么会得到这样错误的结果?其运算机制是怎样的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2023-6-28 09:10:12 | 显示全部楼层
超位数了,你可以试试
nlat=207.
nlon=252.
dx=3000.
dy=3000.
area=nlat*nlon*dx*dy
print(area)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-6-28 15:09:22 | 显示全部楼层
本帖最后由 蒙牛伊利特仑苏 于 2023-6-28 15:13 编辑

好吧,我明白了。NCL中的整数为32位。在计算3000*3000*207*252时,位数是39位,所以舍弃了前7位而保留了后32位,转换为十进制后就是NCL经过整数运算后得到的结果。 matlab.jpg



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-6-28 15:14:04 | 显示全部楼层
AuuuTi 发表于 2023-6-28 09:10
超位数了,你可以试试
nlat=207.
nlon=252.

谢谢指点
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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