回 帖 发 新 帖 刷新版面

主题:求助各位大神,关于有效数字的问题

各位大神:

用fortran编程,matrix里面的变量设为double,即双精度。每一个数有15-16位数,后面是10的几次方。现在我只想要前12位数,后面几位置为0,请问如何做到?



1.12132341412341e-9
1.32132403249123e-8
3.23243211231231e-3

变为:
1.12132341412000e-9
1.32132403249000e-8
3.23243211231000e-3

谢了~:)

回复列表 (共5个回复)

沙发

你是說在輸出時只留12位么?可以用格式化輸出。

板凳

不是的,是在运算过程中,想将后三位数字变为零,原因是后三位是round off,在运算过程中一直累加,会影响运算正确性。

3 楼

忘了有沒有這樣的函數了,不過可以用乘以1000取整數然后再乘以1D-3來實現:)

4 楼

建议采用3楼的方法,本质上是用整数来表示固定精度的浮点数。因为1.12132341412000e-9这样的浮点数可能是二进制无法精确表示的。

5 楼

谢谢了,问题已解决[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册