vba浮点型

问题描述:vba货币型变量与浮点数据区别 大家好,小编为大家解答vb浮点数结果不精确的问题。很多人还不知道vba浮点型强制转换,现在让我们一起来看看吧!

VBA提供了哪些标准数据类型?

vba浮点型的相关图片

vba中货币变量定义为currency,浮点类型定义为Double,二者区别如下:

1、数据长度占用内存相等,都是8个字节,但是currency的范围不如double大。

2、currency定义变量的标识符是@,而double类型是#。

如:Dim num# = 3是定义num为double型,而Dim num@=3就是货币型。

VBA中的数据类型总结如下:

Excel 求教用VBA解决浮点误差的相关图片

Excel 求教用VBA解决浮点误差

VBA提供了15种标准数据类型,具体见下表:

数据类型的转换

1. 各种进制转换函数

VB中涉及到的数据进制之间的转换函数主要有如下几个:。

Hex 函数: 返回代表十六进制数值的 String;。

Oct 函数: 返回代表一数值的八进制值的Variant (String);。

Cint函数: 强制将一个表达式转换成-32,768 至 32,767的整型;。

CLng函数: 强制将一个表达式转换成-2,147,483,648 至 2,147,483,647的长整型;。

Cdec函数: 强制将一个表达式转换成Decimal 数据类型;。

CDbl函数: 强制将一个表达式转换成Double 数据类型;。

例子:

(1) A=hex(5) 返回5;。

(2) B=hex(10) 返回A。

(3) C=hex(23) 返回17。

(4) D=oct(5) 返回5。

(5) E=oct(10) 返回12。

(6) F=oct(23) 返回27。

(7) G=Cint(&H17) 返回23。

(8) H=Cint(&O12) 返回10。

值得一提的是Hex函数和Oct函数返回的都是字符串,如果是想将十六进制或是八进制的字符串变量转换成十进制,可以按如下方法进行:。

C=”17” 17为十六进制数值的String。

C=”&H” & C。

Ic=Cint(C) 返回23。

2. 字符串和数字转换函数

Str()和Val()用于字符串和数字的相互转换;。

Chr()和Asc()用于字符串和AscII码的相互转换;。

Chrw()和Ascw()用于Unicode码和中文的相互转换;。

Format()函数用途十分广泛的一个函数,功能十分强大.。

例子:

(1) MyString = Str(-459.65) ' 返回 "-459.65"。

MyString = Str(459.001) ' 返回 " 459.001"。

(2) MyValue = Val(" 2 45 7") ' 返回 2457。

MyValue = Val("24 and 57") ' 返回 24。

(3) MyChar = Chr(97) ' 返回 a。

MyChar = Chr(37) ' 返回 %。

(4) MyNumber = Asc("Apple") ' 返回 65。

MyNumber = Asc("a") ' 返回 97。

用VBA 表达式表示:将一个单精度浮点型变量A 的值留取三位小数的相关图片

用VBA 表达式表示:将一个单精度浮点型变量A 的值留取三位小数

原因:这是由于浮点运算造成的。(在微软官方有详细说明的)

(0.65)10 = (0.101001100110011001100110011001100110011......)2(0.6) 10 = (0.10011001100110011001100110011001100110011......)2。

目前计算机上存储浮点数值是按照IEEE(电气和电子工程师协会)754浮点存储格式标准来存储的。IEEE单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。其中0:22位包含23位的小数f; 23:30位包含8位指数e;第31位包含符号s。也就是说上面将0.65及0.5转换出的二进制代码,我们只能存储23位,即使数据类型为double,也只能存储52位,这样大家便能看出问题出现的原因了。

截取的二进制代码已无法正确表示0.65及0.5,根据这个二进制代码肯定无法正确得到结果0.05。

在Excel进行计算时在计算机中是转换成二进制进算然后保留数值的,所以会出现误差。

方法一:

将原公式利用round()函数将其保留固定的小数位。

方法二:

工具----选项----重新计算---勾选【以显示精度为准】

vba透视表如何选择数值类型的相关图片

vba透视表如何选择数值类型

Sub test()

A=5.88925

A = Round(A, 3)。

End Sub

Excel 在VBA中怎么定义数值变量

vba透视表根据数据类型选择数值类型。根据查询相关公开信息显示:在VBA中,数据也会被分成不同的类型,例如:处理数字的整型Integer型、长整型Long型、单精度浮点型Single型、双精度浮点型Double型,故vba透视表根据数据类型选择数值类型。

原文地址:http://www.qianchusai.com/vba%E6%B5%AE%E7%82%B9%E5%9E%8B.html

陀螺不抽不转谚语,陀螺不倒原理力学分析图

陀螺不抽不转谚语,陀螺不倒原理力学分析图

脑子笨的人有什么特征,脑子笨的人有什么特征 可以改善吗

脑子笨的人有什么特征,脑子笨的人有什么特征 可以改善吗

otc3最强参数,otc3参数怎么用

otc3最强参数,otc3参数怎么用

免费的数据恢复软件哪个好,免费的数据恢复软件哪个好手机

免费的数据恢复软件哪个好,免费的数据恢复软件哪个好手机

accident例句,accident例句简单

accident例句,accident例句简单

比较吸引人的演讲主题,比较吸引人的演讲主题有哪些

比较吸引人的演讲主题,比较吸引人的演讲主题有哪些

crippled-70

crippled-70

conta,contaminant

conta,contaminant

ddr4内存超频安全电压,ddr4内存超频安全电压是多少

ddr4内存超频安全电压,ddr4内存超频安全电压是多少

s-1103-50

s-1103-50

三国志战略版最大声望攻略 - 快速提升声望技巧大全 三国志战略版乐府高级建筑 - 全面攻略与升级指南 三国志战略版拔城攻略 - 完整攻城技巧与阵容指南 三国志战略版体验服 - 最新版本抢先体验 三国志战略版同盟用法 - 完整攻略指南 三国志14战法效果大全 - 最全战法数据攻略 三国志战略版军屯加点攻略 - 最优加点方案与策略指南 三国志战略版拔城时间攻略 - 最全攻城时间表 三国志战略版调兵和驻守攻略 - 军事部署完全指南 三国志战略版陆逊连营系数详解 - 完整攻略与计算公式 三国志战略版造币厂满宠 - 满宠武将攻略与战法搭配指南 三国志战略版虎帐建不了问题解决方案 - 游戏攻略 三国志战略版陈武自愈攻略 - 技能解析与阵容搭配 三国志战略版兵力上限详解 - 最高可达多少万兵力? 三国志战略版八级地阵容推荐 - 最强阵容搭配攻略 三国志战略版三军秘策使用攻略 - 完整指南与技巧 三国志战略版灼烧战术完全攻略 - 灼烧队配置与使用技巧 三国志战略版怎么提高名声上限 - 完整攻略指南 三国志战略版阵法大全 - 阵法搭配攻略与效果详解 三国志战略版8级地要多少兵力 - 详细攻略与计算器 三国志战略版造币厂数量指南 - 资源产出最大化策略 三国志战略版四星武将排名 - 最强四星武将推荐攻略 三国志战略版灼烧战术全攻略 - 灼烧阵容搭配与武将推荐 三国志14战法表 - 完整战法数据大全 三国志战略版潼关异族兵种详解 - 游戏攻略大全 三国志战略版地势力等级详解 - 完整攻略指南 三国志战略版虎杖需要建吗 - 虎杖建筑价值分析攻略 三国志战略版怎么快速提升武将 - 完整攻略指南 三国志战略版乐府作用详解 - 游戏攻略指南 三国志战略版虎帐属性详解 - 虎帐等级与效果全攻略