【转载】VB6里面,double精度都不够用怎么办?

double类型的精度确实是可定义类型中最高的,但有效数字为15或16位另一种Decimal 数据类型有效位可达到28或29位,但不含指数位应该可以这样理解:Decimal精度更高但示数范围小;double反之而且Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型上面有高手给了你利用Decimal 数据类型解决例题的办法。
另外如果需要,还可以自己定义变量或数组来记录超大数,有效位和示数范围上不封顶,不过进位借位等等操作只有自己解决了

Dim y As Variant
Dim q As Variant
Dim n As Integer

q = 1E+20
n = 17

y = CDec(CDec(q) - Fix(CDec(q) / n) * n)
Print y

时间: 2024-11-06 03:30:33

【转载】VB6里面,double精度都不够用怎么办?的相关文章

double精度的坑与BigDecimal

近期经常接触支付相关的功能,在开发及测试过程中,开始金额都使用的是double类型,而近期新进的需求存在支付时打折的情况,也就是会出现如 1.23元的情况,那么这时候问题来了,如果是直接使用1.23进行支付都是不存在问题的.而偏偏在支付前通常需要一些计算.我们的系统支持会员余额与三方支付(微信.支付宝)同时进行,比如一笔待支付的订单是12.8员,其中用户有5块钱的会员余额,剩下的7.8元通过三方支付进行(这里使用微信吧),那么就涉及到double减法,同时微信支付时需要将元转为分,就是7.8x1

Java中关于 BigDecimal 的一个导致double精度损失的"bug"

背景 在博客 恶心的0.5四舍五入问题 一文中看到一个关于 0.5 不能正确的四舍五入的问题.主要说的是 double 转换到 BigDecimal 后,进行四舍五入得不到正确的结果: public class BigDecimalTest { public static void main(String[] args){ double d = 301353.05; BigDecimal decimal = new BigDecimal(d); System.out.println(decima

Java面试官:兄弟,你确定double精度比float低吗?

我有一个朋友,叫老刘,戴着度数比我还高的近视镜,显得格外的"程序员":穿着也非常"不拘一格",上半身是衬衣西服,下半身是牛仔裤运动鞋. 我和老刘的感情非常好,每周末我们都要在一起吃顿饭.这周,我们吃的是洛阳有名的吴家刀削面,席间他聊了一件蛮有趣的面试经历:我听得津津有味. 散席的时候,老刘特意叮嘱我把他和面试者的对话整理一下发出来,因为他觉得这段对话非常的精彩,值得推荐给更多初学Java的年轻人. 注:以下是老刘和面试者东丰的真实对话.如有雷同,请勿对号入座. 老刘

【转】JAVA程序中Float和Double精度丢失问题

原文网址:http://blog.sina.com.cn/s/blog_827d041701017ctm.html 问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用.为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果

java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】

由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: [java] view plaincopyprint? public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; System.out.println("f=" + f); System

C语言中关于float、double、long double精度及数值范围理解

IEEE754浮点数的表示方法.C语言里对float类型数据的表示范围为-3.4*10^38-+3.4*10^38.double为-1.7*10^-308~1.7*10^308,long double为-1.2*10^-4932~1.2*10^4932. 类型 比特(位)数 有效数字 数值范围 float 32 6~7 -3.4*10^38-+3.4*10^38 double 64 15~16 -1.7*10^-308~1.7*10^308 long double 128/ 18~19 -1.2

float和double精度问题

System.out.println(new BigDecimal(253.90).doubleValue() * 100);25390.0精度正确 System.out.println(new BigDecimal(255.90).doubleValue() * 100);25590.0精度正确 System.out.println(new BigDecimal(256.10).doubleValue() * 100);25610.000000000004精度错误 System.out.pri

杭电 1408 盐水的故事(double精度问题)

盐水的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 13446    Accepted Submission(s): 3272 Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的

[转载] 每个 Python 程序员都要知道的日志实践

原文: http://python.jobbole.com/81666/ 在现实生活中,记录日志非常重要.银行转账时会有转账记录:飞机飞行过程中,会有黑盒子(飞行数据记录器)记录飞行过程中的一切.如果有出现什么问题,人们可以通过日志数据来搞清楚到底发生了什么. 对于系统开发.调试以及运行,记录日志都是同样的重要.如果没有日志记录,程序崩溃时你几乎就没办法弄明白到底发生了什么事情.举个例子,当你在写一个服务器程序时,记录日志是非常有必要的.下面展示的就是 EZComet.com 服务器的日志文件截