我有一组小数位数最多之后3位的数据,可是求和之后结果小数位数有9位?!BUG?

ricleon 2008-04-28 03:31:34
如题,什么问题?字段类型:数字,双精度,附件传不上来?CSDN有那么烂吗?老是提示不能打开文件,什么意思?
金额
.6
.6
.4
.4
.72
.72
.12
2.52
.84
.3
.48
.6
1.8
.6
.15
.75
.96
.3
.36
.12
.6
.6
.4
.4
.72
.12
14.1
4.2
3.15
1.8
2.1
1.08
2.16
1.8
.6
2.7
1.8
1.44
2.25
6.3
7.56
2.52
1.44
1.8
1.8
5.4
2
1.44
2.88
20.16
.45
1.8
2.16
.6
.36
2.52
.5
.3
.7
.4
.48
.72
.8
.9
.2
.4
.4
.4
.12
1.05
.6
.12
2.52
.5
.3
.7
.4
.48
.72
.8
.4
.4
.4
.12
1.05
.6
.12
2.52
.5
.3
.7
.4
.48
.72
.8
.9
.2
.4
.4
.4
.12
1.05
.6
.12
2.52
.5
.12
.6
.48
.7
.3
.4
.72
.8
1.05
.9
.2
.4
.4
.4
.12
.48
1.5
.6
.9
.72
.45
.6
.15
.1
.5
.12
.48
1.5
.6
.1
.9
.72
.45
.6
.15
.5
.12
.48
1.5
.6
.1
.9
.72
.45
.6
.15
.5
.12
1.8
.72
1.05
2.1
1
1.8
.3
3
.9
.4
.12
1.8
.72
1.05
2.1
1
1.8
.3
3
.9
.4
.12
3.6
1.44
2.1
4.2
2
3.6
.6
6
1.8
.8
.24
3.6
1.44
2.1
4.2
2
3.6
.3
6
1.8
.8
.24
4.7
1.8
1.05
.8
.7
.36
.72
.6
.2
.9
1.05
.6
.75
4.7
1.8
.8
1.05
.36
.7
.72
.6
.2
.9
1.05
.6
5.04
2.1
.6
1.4
.8
.8
1.2
1.8
4.5
1.44
.2
1.2
3
.48
.24
5.04
2.1
.6
1.4
.8
.8
1.2
1.8
4.5
1.44
.2
1.2
3
.48
.24
5.04
2.1
.6
.8
.8
1.2
...全文
144 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ricleon 2008-04-28
  • 打赏
  • 举报
回复
谢谢了,感觉分太少了!当初感觉是双精度的问题,没想到能直接全改了!
WWWWA 2008-04-28
  • 打赏
  • 举报
回复
Dim df As New ADODB.Connection
df.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\zz\db1.MDB;Persist Security Info=False"
df.Execute "alter table b2 alter ff decimal(7,3)"
WWWWA 2008-04-28
  • 打赏
  • 举报
回复
alter table Table2 ALTER fd04 decimal(7,3)
要用ADO来执行才行
liuyann 2008-04-28
  • 打赏
  • 举报
回复

ACCESS中不行,ACCESS的查询设计器根本不支持decimal, 如果要用的话只有currency

ACCESS毕竟只是给普通用户的一个桌面应用,不是一个数据库系统。
==== ====
ricleon 2008-04-28
  • 打赏
  • 举报
回复
我直接在ACCESS里执行的不行,当初就是因为在ACCESS里设置这个类型没通过,所以没用,憋了很就,只能用了双精度的,原来从程序里执行不报错!!!!!!!!!!!TNND!
害死人不偿命!唉!谢谢了!
liuyann 2008-04-28
  • 打赏
  • 举报
回复

Public Sub test2()
Dim sSQL As String
sSQL = "alter table Table2 ALTER fd04 decimal(7,3)"

CurrentProject.Connection.Execute sSQL
End Sub


测试OK
==== ====
liuyann 2008-04-28
  • 打赏
  • 举报
回复

等一下,我测试一下

没测试就发了
==== ====
ricleon 2008-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liuyann 的回复:]
currentproject.connection.execute "alter table alter columnName decimal(10,5)"
==== 思想重于技巧 ====
[/Quote]

alter table 表1 alter 金额 decimal(10,5) 语法错误
liuyann 2008-04-28
  • 打赏
  • 举报
回复

currentproject.connection.execute "alter table alter columnName decimal(10,5)"
==== ====
WWWWA 2008-04-28
  • 打赏
  • 举报
回复
语句怎么设置?
改变字段类型?
ricleon 2008-04-28
  • 打赏
  • 举报
回复
语句怎么设置?alter table alter culm???
liuyann 2008-04-28
  • 打赏
  • 举报
回复

计算机用单/双精度是无法无损的表示一个小数的,具体参见 IEEE 754 关于浮点数的介绍。

所以一般来说算钱的时候,一般直接用currency , packed decimal

在你的表结构中改一下就行了。
==== ====
WWWWA 2008-04-28
  • 打赏
  • 举报
回复
正常的,存储格式是不能改变的,设置的3位是显示格式,你可以用MONEY型,
用UPDATE,直接将字段替换为3位小数
FORMAT(1234.566787,'#########.###')
liuyann 2008-04-28
  • 打赏
  • 举报
回复

在精确计算的时候不能用 单/双精度数,

要选 decimal or currency 数据类型。
==== ====
gracexu 2008-04-28
  • 打赏
  • 举报
回复
看不到你的附件不能证明你的问题啊

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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