FAQ > 金融建模 > 建模问题 > 精度

Q:天软精度默认是几位?传到另一个平台使用时,最多显示几位?    

  • A:小数点的位数与数据有关。天软现在使用的是双精度浮点数,64bit,其数值范围为1.7E-308~1.7E+308,最多有15或16位十进制有效数字。如果数值的整数位数据大,那么小数位就会比较少。如果是小于1的数据,那么这个数字可以有15位小数。
        在天软平台,实数数据初次默认显示是2位(底层依然是15位存储),默认显示的位数与用户前一次在客户端的系统设置中调整的一致。用户在系统参数中设置小数位为-1时,即为最大的小数位。
        与第三方交互时,这与第三方的精度有关。按照短板原则显示。

    Q:关于浮点数的一个表示问题,会存在比如,从数据库中将-87.4传递到天软客户端中之后,变成-87.40000000000001,这是什么原因呢?
    A:原因是,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数,注意,这里是近似表示,并不是一定完全相等。
       为什么会这样子呢?因为在计算机存储数字是二进制存储的,二进制它不能“正好”地表达某些数字,比如1/3,只能无限地接近这个数字。
       二进制储存小数的原理是,小数点后第一位为1代表0.5,第二位1代表0.25,第三位1代表0.125,...依此类推,因此,并不能完全表示所有的十进制实数。

    那对于此类数据,如何处理呢?
    若要判断是否相等,则可以通过like进行,比如return 1 like 0.999999999; 其like的精度可由LIKEEPS进行指定,默认为1e-6

    若要显示好看一些,则可通过roundto进行精度的保留。

    若要做非常精细的运算,那建议保留源始精度。