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

三国志战略版高级建筑总量计算器 - 建筑升级资源规划指南 三国志战略版小军屯声望攻略 - 声望等级奖励与获取方法 三国志战略版花席援救攻略大全 - 最新玩法技巧分享 三国志战略版免费试用码 - 最新激活码领取中心 三国志战略版秘策怎么用 - 完全攻略指南 三国志战略版128吕布攻略 - 满级吕布属性技能阵容搭配 三国志定军山之战 - 黄忠斩夏侯渊的经典战役 三国志战略版先锋测试服申请指南 - 官方申请教程 三国志战略版冲突与叠加 - 游戏机制详解 三国志战略版工坊产量计算器 - 最全工坊数据攻略 三国志战略版测试服 - 最新版本抢先体验 | 官方测试服务器 三国志战略版八级地练级攻略 - 最强武将搭配与战术指南 三国志战略版7级土地势力值计算器 - 势力值攻略指南 三国志战略版冲突系统详解 - 战略玩法与攻略指南 三国志战略版拔城指令详解 - 完整攻略指南 三国志战略版虎帐怎么建造 - 完整攻略指南 三国志战略版名声系统详解 - 声望提升攻略大全 三国志三国赏三军 - 完整攻略与奖励详解 三国志战略版巴蜀篇地图 - 完整战略指南 三国志战略版先锋体验官申请 - 抢先体验新版本 三国志战略版百科全书 - 完整攻略指南 三国志战略版乐府系统详解 - 攻略指南 三国志战略版声望系统攻略大全 - 声望获取与使用指南 三国志战略版乐府在哪建 - 最佳建设位置攻略指南 三国志战略版 - 夏侯渊 夏侯惇 郭嘉武将攻略 | 三国武将详解 三国志战略版自愈技能使用指南 - 最佳武将推荐与搭配策略 三国志战略版势力值计算方法详解 - 势力值提升攻略 三国志战略版潼关之战开荒攻略 - 新手必看指南 三国志兵锋战法 - 经典战法详解 三国志战略版八级地怎么升级 - 完整攻略指南