将Decimal转换为等效的字符串

时间:2012-06-28 16:52:43

标签: c#

我在我的应用程序中使用十进制类型,并且必须将该值作为字符串提交给遗留Web服务,该服务接受值作为字符串。这是一个付款价值,所以:

1000 => “100000”(1000美元和00美分)
131.11 => “13111”

我以为我最初会乘以100但遇到一些无效的情况。

修改 好的我会澄清:

decimal val = 145.99m;
Console.WriteLine((val * 100).ToString());

结果:

14599.00

但我确实需要14599没有小数点,因为另一方期望的价值是145美元和99美分。

我在想可能有一种不同的方式,而不是像String.Replace(“。00”,string.Empty)那样做或者这是唯一的方法吗?

3 个答案:

答案 0 :(得分:3)

如果您希望它为0位小数,则可以执行myDecimal.ToString("0");

例如:

decimal myDecimal = 25.99m;
(myDecimal*100m).ToString("0"); // 2599

如果你的小数有更多的小数位:

decimal myDecimal = 3.14159m;
(myDecimal*100m).ToString("0"); // 314

编辑:如果您的小数有额外的小数位,它会执行.5的回合。 (根据我的经验,VS2008)。

答案 1 :(得分:0)

您可以简单地转换为float,除以100,然后转换为字符串(假设您将数字存储为整数)。

答案 2 :(得分:0)

您可以乘以100,然后将其转换为基于整数(数学意义上的整数)来截断小数部分,然后将ToString()转换为结果。

decimal x = 45.13m;
string output = ((long)(x * 100)).ToString();