-3

我在我的应用程序中使用十进制类型,并且必须将该值作为字符串提交给接受值作为字符串的旧版 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) 这样的方法,或者这是唯一的方法吗?

4

3 回答 3

3

如果你希望它是 0 位小数,你可以做myDecimal.ToString("0");.

例如:

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

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

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

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

于 2012-06-28T17:02:32.280 回答
0

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

于 2012-06-28T16:56:06.993 回答
0

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

decimal x = 45.13m;
string output = ((long)(x * 100)).ToString();
于 2012-06-28T16:58:55.923 回答