`
lc90
  • 浏览: 70127 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

快逸报表:精度要求较高的小数计算如何实现

阅读更多
快逸报表实际应用当中,有很多报表中的小数计算(浮点运算)精度要求比较高。
比如金融行业的报表中,对于 (5588.4 + 288.4)* 0.7 这样的计算,要求结果不能使用四舍五入的方式。如果在单元格中直接写上” (5588.4 + 288.4)* 0.7 “,那么报表运行的结果是4113.75999 ,而手工计算的结果是 4113.76 。
那么怎么样把它变成真正的 4113.76 ,而且不能用四舍五入?


解决方案

快逸报表为了加快运算速度,会把直接敲入表达式的小数缺省当成双精度( double )类型处理,此时数据往往存在误差。比如: (5588.4 + 288.4)* 0.7 这样的写法,因为表达式里的三个数值 5588.4 、 288.4 、0.7 缺省变成了double ,用 double 计算的结果就是 4113.75999 。

因此,要使用精度转换函数 decimal() ,将数值转换成更高精度的 decimal 类型。写成: (decimal(’5588.4 ′ ) + decimal(’288.4 ′ ))* decimal(’0.7 ′ ) 即可解决这个问题。
那么,这里为什么不能写成 decimal(5588.4 ) 呢?这是 因为这样写的话, 5588.4 会被缺省当成 double 类型,再转成 decimal ,误差已经存在了,无法消除,必须应该写成: decimal(’5588.4′ ),此时加上引号的 5588.4 不会被当成 double ,直接从字符型转成 decimal ,才是真正的 decimal 数据,不会有任何误差。

分享到:
评论

相关推荐

    HP.rar_高精度 计算器_高精度小数

    在高精度计算中,乘法通常是复杂度较高的操作,因为它需要对每一位进行相应的乘法和累加。常见的实现方法包括Karatsuba算法、Toom-Cook算法或者更为基础的长乘法。这些算法通过分治策略或者位操作来优化计算过程,以...

    易语言汇编实现文本和双精度小数转换源码

    双精度浮点数(Double Precision Floating-Point)是计算机科学中用于存储浮点数的一种格式,它占用64位(8字节)内存空间,可以表示非常大或非常小的数值,且具有较高的精度。在易语言中,对这种数据类型的处理通常...

    js计算精度问题解决方案

    5. **使用固定精度的数字库**:有一些JavaScript库,如`decimal.js`或`bignumber.js`,它们提供了支持任意精度的数字类型,可以在计算过程中保持极高的精度。 6. **利用整数运算**:如果可能,将计算转换为整数运算...

    高精度幂次方计算 C++实现

    对于题目“高精度幂次方计算 C++实现”,我们聚焦于实现一个C++程序,它能计算任意两个大整数的乘方,即求解形如`a^b`的问题,其中`a`和`b`可能是非常大的数值。这个问题在在线判题平台(Online Judge,简称OJ)如...

    C#中处理多位小数精度的精度问题

    4. **使用高精度库**:如果`decimal`的精度仍不足以满足需求,可以考虑使用第三方库,如`System.Numerics.BigInteger`或者专门的高精度计算库。 5. **控制计算顺序和舍入策略**:通过调整计算顺序或应用特定的舍入...

    java高精度计算算法与分析

    java高精度计算通常是指使用BigDecimal类来实现高精度计算,通过设置保留的小数位数来控制计算结果的精度。 java高精度计算的重要性 1. 金融应用:在金融应用中,高精度计算是非常重要的,因为小数点后面的一分钱...

    51单片机—计算器(包含小数计算)

    51单片机:计算器(包含小数计算) ...备注:同普通实现小数计算程序不一样(浮点型数据计算存在精度丢失的情况),本程序全部采用整形进行计算,对小数点进行记录,最后显示再数码管上,保留有3位小数(可自行设置)

    FPGA小数分频实现

    这种方式增加了设计复杂性,但可以实现较高的精度。 3. **CORDIC算法**:CORDIC(Coordinate Rotation Digital Computer)是一种高效的算法,常用于实现乘法、除法和三角函数。在小数分频中,它可以用来计算分频...

    用链表实现小数计算~

    本主题聚焦于如何使用链表来实现小数计算,特别是针对有理数N/M(N)的表示,以及如何处理无限循环小数的情况。 首先,我们来看单链表的基本概念。单链表是一种线性数据结构,由一系列节点组成,每个节点包含两部分...

    易语言源码易语言汇编实现文本和双精度小数转换源码.rar

    易语言源码易语言汇编实现文本和双精度小数转换源码.rar 易语言源码易语言汇编实现文本和双精度小数转换源码.rar 易语言源码易语言汇编实现文本和双精度小数转换源码.rar 易语言源码易语言汇编实现文本和双精度...

    基于字符串的高精度浮点计算实现

    为了解决这个问题,“基于字符串的高精度浮点计算实现”是一种有效的方法。这种方法通过将浮点数转化为字符串形式,然后使用字符串处理算法进行计算,从而极大地提高了浮点计算的精度。 首先,我们要理解为什么需要...

    黄金分割数高精度计算

    黄金分割数的高精度计算对于这些研究工作具有非常重要的意义,特别是在高精度要求的领域,如证券分析、优选法以及美学构图等领域。 黄金分割数的高精度计算算法,包括模拟笔算开平方、二分法、牛顿迭代法和级数展开...

    小数简便计算练习题六套题.pdf

    小数简便计算练习题六套题.pdf 本资源是关于小数简便计算的练习题,共六套题,涵盖了小数加减法和小数乘除法两方面的计算题目。下面我们将对每个方面的知识点进行详细的解释: 小数加减法 小数加减法是小数计算的...

    用小数计算下面各题.pdf

    在这些题目中,我们主要涉及的是小数的计算,其中包括加法、减法以及单位转换。小数是一种表示部分数值的方式,通常用于处理货币、长度、重量等度量单位。以下是一些关键知识点: 1. **小数的加法**:在进行小数...

    labview_32位单精度浮点数转定点小数

    labview_32位单精度浮点数转定点小数,亲测可用(Own use labview to build 32-bit single precision floating point decimal turn, pro-test available)

    小数乘法计算练习(二)

    三、计算题要求在保留特定位数的小数后进行计算。例如,0.8×0.9保留一位小数,答案是0.7;1.7×0.45保留两位小数,答案是0.765,这里要注意四舍五入的规则。 四、判断与改错环节让学生检查对小数乘法的理解以及对...

    C语言高精度计算,使用数组

    为了克服这些限制,我们可以通过软件编程的方式来实现高精度计算。本文将详细介绍如何使用C语言中的数组来实现高精度计算。 #### 二、高精度计算的必要性 计算机硬件对于数值的表示是有范围限制的。在大多数计算机...

    浅谈Java中的高精度整数和高精度小数

    高精度小数: 在 Java 中,高精度小数是指使用 BigDecimal 类来处理的小数。BigDecimal 类是 Java 中的一个类,用于处理大小数的运算。它可以处理任意大小的小数,包括负数和正数。BigDecimal 类提供了多种方法来...

    大数 高精度 计算器 可编程计算器 表达式计算 π值 e值

    在IT领域,大数(Large Number)和高精度(High-Precision)计算是计算机科学中的一个重要部分,特别是在数值计算、密码学、金融计算以及科学计算等领域。这些需求推动了特定类型的计算器和算法的发展,旨在处理超出...

    五年级小数加减乘除混合运算计算题练习题.doc

    小数混合运算是初中数学的重要组成部分,对学生的计算能力和逻辑思维能力具有很高的要求。本文档提供了大量的小数混合运算练习题,涵盖加减乘除四则运算、分数运算、带余数的除法、解方程等多种类型。这些练习题可以...

Global site tag (gtag.js) - Google Analytics