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