用text不就好了。在用val函数转换回来不是很好吗?
解决方案 »
- 注册 vb 编写的dll组件问题
- 请教VB控制POS机上的票据打印机问题~
- 如何获取对方IP地址?
- listbox的问题?
- VB和SQL-2000的连接问题高分高分高分!!!!并且可以提供源代码及数据库!!!
- 数据库中Varchar与char有什么区别
- 有关于Base64的问题,急,急,急!!!!
- 关于ActiveReports的打印问题
- Double类型这么面??--再现等待
- 谢谢大家,我的引用是在vbscript里,模仿netants的右键菜单的方法,我照着文章做的,在c盘下生成注册成功,可用vbscript无法建立该引用?
- 怎样用vb在access的数据库中添加一个表?谢了
- 各位有没有提供了大量ICO和BMP文件下载的好站点介绍?一定给各位加分。
?text , 我也是TEXT 转换过去的呀
VAL() CDBL()保存的时候,还是这样,VB 我打的是SP4
不知道还有什么方法等会儿,我把程序贴上来,大家给看看
+ de.rsKuCun("金额")de=DataEnvironment
其实在未使用ACCESS时, 如
lblChaJiaSunyi.Caption = (TxtInput(2).text - de.rsShangPinZiLiao.Fields("进价")) * lblZongKuCunLiang.Caption 时
TxtInput(2).text =4.5
de.rsShangPinZiLiao.Fields("进价")=4.5
可是两者一减为0,再一乘,就多出小数点后的数字了大家帮忙看看,分数虽然不算什么,对大家也算一种感谢方式吧
真快要死了,再一次,请大家帮帮忙,在保存进ACCESS后,用ACCESS看,是正常的,可一读进
MSHFlexGrid里,5.4 成了 5.400001 ,4.2 成了 4.199999 晕哪!!!!!!!!!!
有什么方法没有啊!OLD_VB_FAN:
不太明白,你的意思,不过我用过@了,开始以为没事了,可输入数值一大,一样会出现这种
误差恳请各位,能帮我想想办法,在这我先谢谢大家了
大家能否把工作平台,写上来看一下,
不知道,是不是工作平台的原因,
我的VB平台是 WIN98+VB6+SP4
狼兄啊。。
不是我不想,有些地方,没法用啊,如MSHFlexGrid
很烦的,很慢的,这不是把房子拆了,那微软做什么,他不白拿钱了
:ZZH
精度是够了,可能就是你说ADO驱动的原因,不过我发现还有几种原因,跟微软有关
:Joeking
HI,解决就好,管它什么方法,是吧,不过,我这是写回数据库,怎么办。我这还有一个问题,也是关于ACCESS的,大家帮忙看一下吧。
http://www.csdn.net/expert/topic/187/187633.shtm
建议二:全部采用字符串(输入、计算、保存、显示)。下面是字符串运算的函数(抱歉,现在只有乘法):'Module1Option ExplicitPublic Len1 As Integer
Public Len2 As Integer
Public Len3 As Integer
Public strResuilt As String
Public Dot1 As Integer
Public Dot2 As IntegerPublic Function Multiply(ByVal str1 As String, ByVal str2 As String) As String
Dim I As Integer
Dim J As Integer
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
If Not (IsRight(str1, Dot1) And IsRight(str2, Dot2)) Then
Multiply = "ÊäÈëÊý×ÖÓдí"
Exit Function
End If
'a = StrPtr(strResuilt)
str1 = Trim(str1)
str2 = Trim(str2)
Len1 = Len(str1)
Len2 = Len(str2)
Len3 = Len1 + Len2
strResuilt = Space(Len3)
For I = Len1 To 1 Step -1
For J = Len2 To 1 Step -1
X = Val(Mid(str1, I, 1))
Y = Val(Mid(str2, J, 1))
Z = X * Y
SumUp I, J, Z, Len(Trim(Str(Z)))
Next
Next
strResuilt = Left(Trim(strResuilt), Len(Trim(strResuilt)) - Dot1 - Dot2) & "." & Right(Trim(strResuilt), Dot1 + Dot2)
If (Dot1 + Dot2) <> 0 Then
For I = Len(Trim(strResuilt)) To 1 Step -1
If Mid(strResuilt, I, 1) = "0" Then
Mid(strResuilt, I, 1) = " "
Else
Exit For
End If
Next
End If
Multiply = Trim(strResuilt)
If Mid(Multiply, Len(Multiply), 1) = "." Then
Multiply = Left(Multiply, Len(Multiply) - 1)
End If
End FunctionSub SumUp(ByVal I As Integer, ByVal J As Integer, ByVal Num As Integer, ByVal L As Integer)
Dim T As Integer
For T = 1 To L
Carry J + I + 1 - T, Val(Mid(Trim(Num), (L - T + 1), 1))
Next
End SubPublic Sub Carry(ByVal S As Integer, ByVal V As Integer)
Dim VV As Integer
VV = Val(Mid(strResuilt, S, 1)) + V
If VV >= 10 Then
Mid(strResuilt, S, 1) = Trim(Str(VV Mod 10))
Carry S - 1, VV \ 10
Else
Mid(strResuilt, S, 1) = Trim(Str(VV))
End If
End SubPrivate Function IsRight(ByRef str1 As String, ByRef Dot As Integer) As Boolean
Dim I As Integer
Dim NumDot As Integer
str1 = Trim(str1)
IsRight = True
NumDot = 0
Dot = 0
For I = 1 To Len(str1)
If Mid(str1, I, 1) < "0" And Mid(str1, I, 1) = "." Or Mid(str1, I, 1) >= "0" And Mid(str1, I, 1) <= "9" Then
If Mid(str1, I, 1) = "." Then
NumDot = NumDot + 1
Dot = Len(str1) - I
If NumDot > 1 Then
IsRight = False
Exit For
End If
End If
Else
IsRight = False
Exit For
End If
Next
If IsRight Then
str1 = Replace(str1, ".", "", 1)
End If
End Function/下面是form中的代码Option ExplicitPrivate Sub Command1_Click()
Text3.Text = Multiply(Text1.Text, Text2.Text)
'Text4.Text = Multiply1(Text1.Text, Text2.Text)
End SubPrivate Function Multiply1(a As String, b As String) As String
Dim strResult As String
Dim strTem As String
Dim lngTem As Long
Dim intX As Integer
Dim intY As Integer
For intX = 1 To Len(a)
'Debug.Print Mid(a, Len(a) - intX + 1, 1)
strTem = ""
For intY = 1 To Mid(a, Len(a) - intX + 1, 1)
strTem = Add(strTem, b, 0)
Next intY
strResult = Add(strResult, strTem & MutiChar("0", intX - 1), 0)
Next intX
Multiply1 = strResult
End Function
Private Function Add(a As String, b As String, inValue As Integer) As String
Dim Upvalue As Integer
Dim X As String
Dim Y As String
If a = "" Then a = 0
If b = "" Then b = 0
Upvalue = CInt(Right(a, 1)) + CInt(Right(b, 1)) + inValue
If Len(a) = 1 And Len(b) = 1 Then
Add = CStr(Upvalue)
Else
If Len(a) = 1 Then X = "0" Else X = Left(a, Len(a) - 1)
If Len(b) = 1 Then Y = "0" Else Y = Left(b, Len(b) - 1)
If Upvalue >= 10 Then
Add = Add(X, Y, 1) & CStr(Upvalue - 10)
Else
Add = Add(X, Y, 0) & CStr(Upvalue)
End If
End If
End Function
Private Function MutiChar(m As String, number As Integer) As String
Dim X As Integer
Dim strTem As String
For X = 1 To number
strTem = strTem & m
Next X
MutiChar = strTem
End FunctionPrivate Sub Form_Load()End Sub
limengchen:的说法给我的启发,很大huanggx(大侠) :辛劳你,写贴了这么长的程序,谢谢
OLD_VB_FAN(蓝星) :不反对使用字符串,不过我还是想有合适的解决,因为"曲线救国"太慢了,@@这是根本之道,以前我用@@虽然没用彻底解决问题,但思路是对的,所以不过如何,我也要对你说声谢谢
zzh():正如你所说的,这应该是驱动的问题,谢谢
yeya(鸭鸭) :欢迎你,感谢你热情的帮助
这次问题主要都是因为微软的控件和ADO引起的。
所以去掉了一些控件,ADO,就没有办法了,
不知道楼上的朋友,用什么方法解决了这些问题,如果有什么高见,请联系我EMAIL:[email protected]
OICQ:15424257
现在,在用CE,VB,VC,这方面的朋友能否加上QQ,多交流一下