关于单双精度的问题

DengXingJie 2011-07-14 10:27:00

dim d1 as double,dim d2 as double
d1=123456.58
d2=123456.6
debug.print d1+d1
'得结果:-200000000040745E-02



dim d1 as single,dim d2 as single
d1=123456.58
d2=123456.6
debug.print d1+d1
'得结果:-0.0234375

以前没注意单双精度有这种问题,请问原因及解决方法
...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
单双精度,就是这种情况,楼主可以回头看看关于数据类型部分的说明。
至于显示格式,可以用FORMAT去规定它按怎样的形式去显示。
Tiger_Zhao 2011-07-15
  • 打赏
  • 举报
回复
提问的基本前提是用简短的话将问题描述清楚。
我知道怎么修改代码能得到 -200000000040745E-02 和 -0.0234375,但那样不是提问,是有奖竞猜!

贝隆 2011-07-14
  • 打赏
  • 举报
回复
楼主和我们开玩笑?

Option Explicit

Private Sub Command1_Click()
Dim d1 As Double
Dim d2 As Double
d1 = 123456.58
d2 = 123456.6
Command1.Caption = CStr(d1 + d2)
Debug.Print d1 + d2
End Sub

Private Sub Command2_Click()
Dim d1 As Single
Dim d2 As Single
d1 = 123456.58
d2 = 123456.6
Command2.Caption = CStr(d1 + d2)
Debug.Print d1 + d2
End Sub



我无法得到楼主的运行结果
zdingyun 2011-07-14
  • 打赏
  • 举报
回复
Format函数格式输出,
或者用
Decimal 数据类型
Decimal 变量存储为 96 位(12 个字节)无符号的整型形式,并除以一个 10 的幂数。这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为 0(没有小数位)的情形下,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001。

Tiger_Zhao 2011-07-14
  • 打赏
  • 举报
回复
A)代码和输出不符!
B)什么问题?
无·法 2011-07-14
  • 打赏
  • 举报
回复
你想结果都是下面那样的?貌似没什么办法,以前遇到过,然后就都将类型改为single了
DengXingJie 2011-07-14
  • 打赏
  • 举报
回复
不好意思,d2是有负号
  • 打赏
  • 举报
回复
+-电子问题……
zdingyun 2011-07-14
  • 打赏
  • 举报
回复
似乎LZ是在开玩笑!
得到LZ结果的代码是
Private Sub Command1_Click()
Dim d1 As Double
Dim d2 As Double
d1 = 123456.58
d2 = 123456.6
Debug.Print d1 - d2
'得结果:-200000000040745E-02
End Sub

Private Sub Command2_Click()
Dim d1 As Single
Dim d2 As Single
d1 = 123456.58
d2 = 123456.6
Debug.Print d1 - d2
'得结果:-0.0234375
End Sub
咸清 2011-07-14
  • 打赏
  • 举报
回复
很奇怪,是什么软硬件平台?
xxfly 2011-07-14
  • 打赏
  • 举报
回复
测试只有类型不一样才有
Dim d1 As Single
Dim d2 As Double
d1 = 123456.58
d2 = 123456.6
Debug.Print d1 + d2
246913.178125

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧