防爆ct4g吗:VB 中的数据6.76999999996042E-02怎么变成0.0676999999996042呀

来源:百度文库 编辑:高考问答 时间:2024/05/08 00:09:40
VB 中的数据6.76999999996042E-02怎么变成0.0676999999996042 呀
谢谢~~~我是要打印出 0.0676999999996042 我的代码如下:

Private Sub Command1_Click()
Dim dblAmountTotal As Double
Dim x As Double
x = 64654.4677
dblAmountTotal = x - Repl(ChgNull(64654.4))
Print dblAmountTotal
End Sub

'功 能:对Null值的处理
'叁 数:varData等待处理的变数
'返 回 值:varData
Public Function ChgNull(varData As Double) As Variant
On Error Resume Next

If IsNull(varData) Then
ChgNull = ""
Else
ChgNull = CStr(varData)
If UCase$(ChgNull) = "NULL" Then ChgNull = ""
ChgNull = Trim$(ChgNull)
End If
End Function
'功 能:把字符串(NumStr)中的,去掉,再转换为数字
'叁 数:NumStr待转换的变量
'返 回 值:数字
'说 明:如:99,999=>99999
Public Function Repl(strNumStr As Variant) As Double
On Error Resume Next
If IsNumeric(strNumStr) = False Then
Repl = 0
Else
Repl = CDbl(strNumStr)
End If
End Function

功能:把6.76999999996042E-02变成0.0676999999996042
输入数据(字符串)到aO,由a2输出
原代码:
Rem 输入的科学技术法的字符串,不使用浮点数
Dim a0 As String
Rem 中间使用的字符串,用来保存没有尾数的字符
Dim a1 As String
Rem 输出字符串
Dim a2 As String
Rem 记录“E”的位置,即科学技术符的位置
Dim b As Byte
Rem 记录科学技术符后面的数字的绝对值
Dim c As Byte

a0 = "6.76999999996042E-02"
Rem 查找“E”
b = InStr(1, a0, "E")
Rem 判断是否有科学技术符
If b <> 0 Then
Rem 保存没有尾数的字符
a1 = Left(a0, 1) + Mid(a0, 3, b - 3)
Rem 记录科学技术符后面的数字的绝对值
c = Right(a0, Len(a0) - b - 1)
Rem 判断科学技术符后面是正还是负
If Asc(Mid(a0, b + 1, 1)) = Asc("-") Then
Rem 是负的前面加零
a2 = "0." + String(c - 1, "0") + a1
Else
Rem 是正的,小数点后移
a2 = Left(a1, c + 1) + "." + Right(a1, Len(a1) - c - 1)
End If
Else
Rem 输出字符串
a2 = a0
End If
Rem 报告结果
MsgBox a2

你的这个是无限的循环吗?
我也在学VB,大家交流交流