为什么String.Replace()不起作用

bronica_chen 2010-05-12 05:29:23
我想请教一下,我的程序里面将“,”替换成“.”的时候不起作用
用VB2003.NET
比如我的值是97.08297932597

Dim sCalBin as String
Dim sCalVal as Double
Dim sInQty as integer

sCalVal = bin(CType(sCalBin, Int32) - 1) / sInQty * 100
//sCalBin是从数据库拿的数据
temp = sCalBin.Split(","c)
sCalVal = 0
For K = 0 To temp.Length - 1
sCalVal = sCalVal + bin(CType(temp(K), Int32) - 1)
Next
sCalVal = sCalVal / sInQty * 100 //这步sCalVal=97.08297932597 但系统自动转化成97,08297932597,奇怪的要死,只能再写下面的语句卡这个。
If Not sCalVal.ToString.IndexOf(",") = -1 Then
sCalVal = CType(sCalVal.ToString.Replace(","c, "."c), Double) //现在执行这步的时候,sCalVal=9708297932597.0 Replace根本没起任何作用。
End If



请教一下,该如何解决这个棘手的问题。谢谢!
...全文
617 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bronica_chen 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cuike519 的回复:]
全角还是半角搞清楚了么?
[/Quote]

全角半角没问题,这个我检查过了。
bronica_chen 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 forrest23 的回复:]
我很奇怪 这个 sCalVal = sCalVal / sInQty * 100 //这步sCalVal=97.08297932597 但系统自动转化成97,08297932597 这个会转化成这个吗? sCalVal,sInQty的值分别是什么 能说下嘛
[/Quote]

这样啊,sCalBin="1,10"
sInQty是个整数
我前面有段代码是将sCalBin以逗号分开的,截取1和10两个数据,然后找到对应的相加的。

就这我发的代码,sCalVal=3428 , sInQty=3531
cuike519 2010-05-12
  • 打赏
  • 举报
回复
全角还是半角搞清楚了么?
Forrest23 2010-05-12
  • 打赏
  • 举报
回复
我很奇怪 这个 sCalVal = sCalVal / sInQty * 100 //这步sCalVal=97.08297932597 但系统自动转化成97,08297932597 这个会转化成这个吗? sCalVal,sInQty的值分别是什么 能说下嘛
Forrest23 2010-05-12
  • 打赏
  • 举报
回复
sCalVal = Double.Parse(sCalVal.ToString.Replace(",", "."))
兔子-顾问 2010-05-12
  • 打赏
  • 举报
回复
楼上说的没错。
你这句
CType(sCalVal.ToString.Replace(","c, "."c), Double)
字符串怎么能直接类型转换成数字呢,需要用
sCalVal = Double.Parse(sCalVal.ToString.Replace(","c, "."c))
wwhhg 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwhhg 的回复:]
分开写试试看
Dim Str as String
Str=sCalVal.ToString.Replace(",", ".")
sCalVal = CType(Str, Double)
......
[/Quote]
分细一些
Dim Str1 , Str2 as String
Str1=sCalVal.ToString
Str2=Str.Replace(",", ".")
sCalVal = Val(Str2)



wwhhg 2010-05-12
  • 打赏
  • 举报
回复
分开写试试看
Dim Str as String
Str=sCalVal.ToString.Replace(",", ".")
sCalVal = CType(Str, Double)
......
e289056 2010-05-12
  • 打赏
  • 举报
回复
试试Format(sCalVal,"0.00000000000")'要保留的小数位

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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