C# 从字符串中获取美分值的最佳方法是什么?

C# 从字符串中获取美分值的最佳方法是什么?,c#,asp.net,.net,vb.net,C#,Asp.net,.net,Vb.net,我希望获得最优雅的解决方案(最少的类型化代码),以满足将便士字符串转换为美元美分值的需求。它必须表示美分(.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,

我希望获得最优雅的解决方案(最少的类型化代码),以满足将便士字符串转换为美元美分值的需求。它必须表示美分(.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, ".") 
或者,如果你对优雅的定义意味着“线条更少”:

试试下面的方法

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

“最优雅的解决方案”是主观的“除以100不是直截了当的”为什么不呢?该值不会将美分显示为.00。从技术上讲,您可以执行
decimal.Parse
,这也会支持更多的数字。在扫描此函数的文档后,我使用了类似(“#.##”)的方法来收集它可能是基于匹配的。在你用(“$#.00”)回答之后,我想知道我是否必须省略美元符号,但简单地使用(“$#.00”)就行了!
value = (int.Parse(line) / 100m).ToString("$#.00");
Dim str as string = "0006500000"
Dim d as decimal = cdec(str) / 100
Msgbox(d.tostring("#.##"))