2016-11-11 53 views
-2

我希望能够获得最优雅的解决方案(最少量的键入代码),以便将一分钱字符串转换为美分值。它必须代表美分(.00),所以除以100不是直截了当的。例如“00000600000”必须表示为“6000.00”。我已经产生了以下方法:从字符串中获取美分值的最佳方法是什么?

value = Math.Abs(Int(Mid(Mid(line, 188, 11), 1, Len(Mid(line, 188, 11)) - 2))) & "." & Mid(Mid(line, 188, 11), Len(Mid(line, 188, 11)) - 1, 2) 

value = (Math.Abs(Int(Mid(line, 188, 11))).ToString).Insert(Math.Abs(Int(Mid(line, 188, 11))).ToString.Length - 2, ".") 

value = Math.Abs(Int(Mid(line, 188, 11))) : value = value.Insert(value.Length - 2, ".") 
+2

_ “最优雅的解决方案”_是主观的 – MickyD

+0

“除以100不是直截了当的”为什么不呢? –

+0

这个值不会显示为0.0 –

回答

4
int cents = int.Parse(line); 
decimal dollars = cents/100m; 
string value = dollars.ToString("$#.00"); 

或者,如果您的优雅定义意味着 “更少的线”:

value = (int.Parse(line)/100m).ToString("$#.00"); 
+0

_technically_您也可以执行'decimal.Parse'也可以支持更多数字。 –

+1

扫描完此功能的文档后,我使用了诸如(“#。##”)之类的内容来收集可能匹配的内容。在您回答(“$#。00”)后,我想知道是否必须忽略美元符号,但只是使用(“#.00”)起作用! –

0

请尝试以下

Dim str as string = "0006500000" 
Dim d as decimal = cdec(str)/100 
Msgbox(d.tostring("#.##")) 
相关问题