我需要将十进制值转换为类似
的值0.3 = USDC000000000030
我写的代码如下。
transactionAmount = String.Format("USDC{0}", ((int)(amount*100)).ToString("D12"));
然而,它正好适用于某些值,就像上面给出的例子一样。对于其他一些值,转换是错误的,例如
0.9 = USDC000000000089
1 = USDC000000000099
1.1 USDC000000000109
知道为什么会这样发生吗?
提前致谢
答案 0 :(得分:1)
您可能正在使用double
,这对于财务价值来说是一个巨大的错误。
请改用decimal
,然后清除烦恼。
即便:
decimal amount = 0.3m;
string s = String.Format("USDC{0:000000000000}", 100 * amount);
Console.WriteLine(s);
输出:
USDC000000000030
请注意语言规范说明:
十进制类型是128位数据类型,适用于财务和货币计算。
答案 1 :(得分:0)
请改为尝试:
String.Format("USDC{0:D12}", (int)(Convert.ToDecimal(amount) * 100));
测试以下内容: