C#将int转换为带小数位的货币字符串
本文关键字:货币 字符串 小数 int 转换 | 更新日期: 2023-09-27 18:02:41
转换。布拉。。。对我来说,这可能是语言中最令人困惑的方面。
无论如何,我想把int 999转换成9.99美元。使用ToString("C"(会给我999.00美元,这不是我想要的。
我所有的整数都是这样工作的,这意味着如果某个东西的价格是12.30,那么int值将是1230。总是小数点后两位。我知道这对大多数人来说很容易,我在这里或通过谷歌都找不到任何东西。
此外,如果您有任何关于转换的资源,我们将不胜感激!
如果源变量被声明为int,那么一个可能的解决方案是除以"100m"而不是"100"。否则,它将执行整数除法。例如:
int originalValue = 80;
string yourValue = (originalValue / 100m).ToString("C2");
这会将您的Value设置为"$0.80"。如果您省略"m",它会将其设置为"$0.00"。
注意:"m"告诉编译器将100视为十进制,并且作为除法的一部分,originalValue将发生隐式强制转换。
只需除以100:
yourValue = (originalValue / 100).ToString("C");<br>
// C will ensure two decimal places... <br>
// you can also specificy en-US or whatever for you currency format
有关货币格式的详细信息,请参阅此处。
更新:
我今天一定很慢。。。你还必须转换成双精度,否则你会失去小数点:
yourValue = ((double)originalValue / 100).ToString("C");
(或者,您可以使用十进制,因为它通常是首选的货币类型(。
我为那些只需要根据特定分隔符来划分零的人提供了一个函数。例如:1250000->1250000..
public static string IntToCurrencyString(int number, string separator)
{
string moneyReversed = "";
string strNumber = number.ToString();
int processedCount = 0;
for (int i = (strNumber.Length - 1); i >= 0; i--)
{
moneyReversed += strNumber[i];
processedCount += 1;
if ((processedCount % 3) == 0 && processedCount < strNumber.Length)
{
moneyReversed += separator;
}
}
string money = "";
for (int i = (moneyReversed.Length - 1); i >= 0; i--)
{
money += moneyReversed[i];
}
return money;
}
享受吧!