Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 十进制数据类型的精度是多少?_Excel_Vba_Floating Accuracy - Fatal编程技术网

Excel 十进制数据类型的精度是多少?

Excel 十进制数据类型的精度是多少?,excel,vba,floating-accuracy,Excel,Vba,Floating Accuracy,我找不到哪一个州的VBA对数字e有一个特殊的变量,所以我想小数位数足够大了。 手册规定如下: 您可以对货币值使用十进制变量。优点是数值精确。双精度数据类型速度更快,所需内存更少,但会出现舍入错误。Decimal数据类型将完全精确到小数点后28位 我尝试过使用dime e@(“@”是手册中的十进制标识符)以及这种格式 Dim MyDecimal As Variant MyDecimal = CDec(3000000000000) 从 但是,当我尝试使用值2.71828182845904535

我找不到哪一个州的VBA对数字e有一个特殊的变量,所以我想小数位数足够大了。 手册规定如下:

您可以对货币值使用十进制变量。优点是数值精确。双精度数据类型速度更快,所需内存更少,但会出现舍入错误。Decimal数据类型将完全精确到小数点后28位

我尝试过使用
dime e@
(“@”是手册中的十进制标识符)以及这种格式

Dim MyDecimal As Variant
MyDecimal = CDec(3000000000000) 

但是,当我尝试使用值
2.718281828459045353602874713
初始化
e
时,它会向下舍入到
2.71828182845905
。这是怎么回事?是否可以不使用28位小数

这是怎么回事?是否可以不使用28位小数

这是因为,当您这样做时,在
CDec
转换它之前,该值被读取为一个Double,因此被截断为该数据类型可以保存的值

?CDec(2.718281828459045353602874713)
2.71828182845904
? CDec(CDbl(“2.718281828459045235602874713”))
2.71828182845904
? CDec(“2.718281828459045353602874713”)
2.7182818284590452353602874713 
这是怎么回事?是否可以不使用28位小数

这是因为,当您这样做时,在
CDec
转换它之前,该值被读取为一个Double,因此被截断为该数据类型可以保存的值

?CDec(2.718281828459045353602874713)
2.71828182845904
? CDec(CDbl(“2.718281828459045235602874713”))
2.71828182845904
? CDec(“2.718281828459045353602874713”)
2.7182818284590452353602874713 

在线查看文档时,您需要注意不要查看VB.NET,它与VBA是完全不同的平台,只是在语法意义上不同。有一些关于十进制的有用信息。可能有助于您的帖子包含一个完整的测试示例,因为在Excel中输入和输出十进制类型的数字主要意味着使用文本(因为具有数字格式的单元格不能保持与十进制类型相同的精度)。在线检查文档时,您需要小心不要查看VB.NET,这是一个与VBA完全不同的平台,除了在语法意义上。有一些关于十进制的有用信息。这可能有助于您的文章包含一个完整的测试示例,因为在Excel中输入和输出十进制类型的数字主要意味着使用文本(因为具有数字格式的单元格不能保持与十进制类型相同的精度)