我必须创建一个长双随机生成器。我在想一个线性同余生成器,因为我不需要高精度的随机序列。但是如何将整数转换为long double?
答案 0 :(得分:1)
分配后隐含转换。 (用gcc测试):
program test
integer i
real*10 d
i = 10000
i = i * 101
d = i
write (*,*) 'result is', d
end
...修改......
我担心有些扩展类型无法正常工作,我创建了一个更彻底的测试:
program test
integer i
real f
double precision d
real*10 ld
i = 100000
i = i * 101 + 101
f = i * 1.1
d = f * 1.1
ld = d * 1.1
write (*,*) 'result is', i, f, d, ld
end
[wally@zenetfedora ~]$ ./a.out
result is 10100101 11110111. 12221122.364885688 13443234.892748519537