是否有可能仅使用 ToString()来释放金额,例如1.99.ToString(“SOME FORMAT HERE”)?
e.g。如果我希望1.99显示为“1美元99美分”
,该怎么办? ($"{ Convert.ToInt32(amount) } dollar(s) { amount.ToString("???") } cents")
?
答案 0 :(得分:0)
如果金额是双倍,这将有效。如果amount是string,那么你不需要在下一行中使用ToString()。请注意,这是假设您在问题中列出的格式:
string line = string.Concat("$", amount.ToString().Split('.')[0], " dollar(s) ", amount.ToString().Split('.')[1].Substring(0,2), " cents");
答案 1 :(得分:0)
我认为你只能用ToString
方法做到这一点,所以这是另一种方式。
您可以先执行此操作来获取小数部分:
var decimalPart = yourDouble - (int)yourDouble;
然后,您可以将小数部分乘以100并将结果转换为int。
var twoDigits = (int)(decimalPart * 100);
要将其转换为两位数字符串,只需将0填充到左侧:
var result = twoDigits.ToString().PadLeft(2, '0');
答案 2 :(得分:0)
我不能仅使用ToString(),但这几乎是你想要的:)
double d = 15.12;
var str = d.ToString("0 dollar(s) .00 cents").Replace(".", string.Empty);
无论如何,我建议您创建一个扩展方法来执行此操作:
public static class Extensions
{
public static string ToFormattedString(this double number)
{
var integerPart = Convert.ToInt32(number);
var decimalPart = Convert.ToInt32((number - integerPart) * 100);
return String.Format("{0} dollar(s) {1} cents", integerPart, decimalPart);
}
}
用法:
Console.WriteLine(d.ToFormattedString());