2

我必须创建一个长的双随机发生器。我正在考虑一个线性同余生成器,因为我不需要高精度随机序列。但是如何将整数转换为长双精度型呢?

4

1 回答 1

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      
于 2011-04-28T14:46:13.073 回答