使用String.Format时,值不正确
本文关键字:不正确 String Format 使用 | 更新日期: 2023-09-27 18:10:15
我需要将一个十进制值转换成像
这样的值0.3 = USDC000000000030
我写的代码如下:
transactionAmount = String.Format("USDC{0}", ((int)(amount*100)).ToString("D12"));
但是,对于上面给出的示例中的某些值,它可以完美地工作。对于其他一些值,它是转换错误的,例如
0.9 = USDC000000000089
1 = USDC000000000099
1.1 USDC000000000109
知道为什么会这样吗?
Thanks in advance
您可能使用double
,这对于财务价值来说是一个巨大的错误。
用decimal
代替,洗去你的烦恼。
即:
decimal amount = 0.3m;
string s = String.Format("USDC{0:000000000000}", 100 * amount);
Console.WriteLine(s);
输出:USDC000000000030
注意语言规范声明:
十进制类型为128位数据类型,适合于金融和货币计算。
试试这个:
String.Format("USDC{0:D12}", (int)(Convert.ToDecimal(amount) * 100));
用以下方法测试:
- 0.90 = usdc000000000090
- 1.00 = usdc000000000100
- 0.89 = usdc000000000089
- 0.84 = usdc000000000084
- 1.10 = usdc000000000110