【问题标题】:What is the best method to obtain dollar value with cents from a string?从字符串中用美分获取美元价值的最佳方法是什么?
【发布时间】:2016-11-11 23:24:51
【问题描述】:

我希望获得最优雅的解决方案(最少的键入代码),以满足将一分钱字符串转换为美元美分值的要求。它必须代表美分 (.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, ".") 

【问题讨论】:

  • “最优雅的解决方案”是主观的
  • “除以 100 不是直截了当的”为什么不呢?
  • 该值不会将美分显示为 .00

标签: c# asp.net .net vb.net


【解决方案1】:
int cents = int.Parse(line);
decimal dollars = cents / 100m;
string value = dollars.ToString("$#.00");

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

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

【讨论】:

  • 技术上你也可以使用decimal.Parse 来支持更多的数字。
  • 在扫描了这个函数的文档之后,我使用了类似 ("#.##") 的东西来收集它可能是基于匹配的。在您回答 ("$#.00") 之后,我想知道是否必须以其他方式省略美元符号,但只需使用 ("#.00") 即可!
【解决方案2】:

试试下面的

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2011-09-29
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多