首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以制作双浮动值?

是否可以制作双浮动值?
EN

Stack Overflow用户
提问于 2018-12-13 01:14:01
回答 2查看 0关注 0票数 0

问题:是否可以在Small和Visual Basic中创建Double Float值?

我一直在尝试在Small / Visual Basic中创建一个双浮点值(就像它们中的两个一样)...... 而且我一直都没有运气..我总是以这样的错误终止:

代码语言:javascript
复制
    at System.Decimal..ctor(Double value)
    at System.Decimal.op_Explicit(Double value)
    at Microsoft.SmallBasic.Library.Primitive.op_Implicit(Double value)
    at _SmallBasicProgram._Main()

或者,在Visual Basic中运行:

代码语言:javascript
复制
overflow

那么,有没有办法制作双非整数(十进制)精度浮点数?

代码(我试过)是:

Small Basic:

代码语言:javascript
复制
var1 = 18446744073709551615
var2 = 1797693134862315800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

(是的,抱歉零的数量......这是其中的303个。) 和在Visual Basic中:

代码语言:javascript
复制
Module experiment_doesDoubleFloat_workModule
    Dim var1, var2 As Double
    Sub Main()
        var1 = 18446744073709551615
        var2 = 1797693134862315800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    End Sub
End Module

我搞砸了什么? 我也不知道哪个标签真的适合这个...(除了小基本标签)

EN

Stack Overflow用户

发布于 2018-12-13 10:05:33

这不起作用的原因是因为您有效地为编译器提供了Integer格式的常量,并且编译器正在尝试将您的巨大整数转换为浮点值。这会失败,因为您的> 300位数值大于适合任何标准数据类型的最大整数。

如果要在代码中分配常量值,则必须采用编译器可以解析的格式,即:

代码语言:javascript
复制
 var1 = 1.8446744073709552E+19
 var2 = 1.7976931348623157E+308

事实上,当你输入时你会注意到:

代码语言:javascript
复制
 var1 = 1.8446744073709551615E+19

该值自动转换为:

代码语言:javascript
复制
 var1 = 1.8446744073709552E+19

因为原始值包含的double格式比格式可以容纳的更精确。另外,我没有计算代码示例中的零个数,但是如果它是303个,那么这会产生值var2 = 1.797... E+319,这对于a来说也太大了double...E+308如上所述,对于292个零,该值变为最大可表示的双精度浮点值。

请注意,只要代码中的值足够小以适应浮点变量,就可以将整数常量分配给浮点变量Integer。看到:

代码语言:javascript
复制
var1 = 9223372036854775807  ' << largest Int64

编译好,但还有一个

代码语言:javascript
复制
var1 = 9223372036854775808

失败。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档