主题:[原创]编程时如何对这样的数据赋值?
最近在改一个matlab程序,开始数据赋值的时候有这么几句:
PI=3.1415926
c=29979245800
SIc=299792458
epsilon0=1/(4*pi*SIc**2)*10**7
mu0=4*pi*10**(-7)
e=1.60217733*10**(-19)
m=9.1093897*10**(-31)
发现在fortran中直接这样赋值的话,像C就会产生整数溢出,而像e那样的会直接变成0,而PI直接变成3.141593了。如果声明成双精度型变量,c还会整数溢出e不会变成0了,但e会变成1.602177372940411E-019,小数部分发生改变,像e直接写成指数形式倒是可以,但小数部分还是发会生舍去,另外因为计算中涉及到的指数运算很多,因为matlab都是用^直接指数运算,直接批替换为**方便了很多,但会不会对结果产生大的影响呢?
想请教一下大家:在编程计算实际问题的时候,对于数据类型如何处理比较好呢。上面的赋值,用fortran如何编写比较合理呢?
我编译器用的是Microsoft developer studio
PI=3.1415926
c=29979245800
SIc=299792458
epsilon0=1/(4*pi*SIc**2)*10**7
mu0=4*pi*10**(-7)
e=1.60217733*10**(-19)
m=9.1093897*10**(-31)
发现在fortran中直接这样赋值的话,像C就会产生整数溢出,而像e那样的会直接变成0,而PI直接变成3.141593了。如果声明成双精度型变量,c还会整数溢出e不会变成0了,但e会变成1.602177372940411E-019,小数部分发生改变,像e直接写成指数形式倒是可以,但小数部分还是发会生舍去,另外因为计算中涉及到的指数运算很多,因为matlab都是用^直接指数运算,直接批替换为**方便了很多,但会不会对结果产生大的影响呢?
想请教一下大家:在编程计算实际问题的时候,对于数据类型如何处理比较好呢。上面的赋值,用fortran如何编写比较合理呢?
我编译器用的是Microsoft developer studio