转换长格式的十进制值时,c#中的类型转换错误
我使用的是STRIPE API,当我传递除小数以外的任何数值时,如果我将20作为paymentDto.amount提供给此代码,则它对ex有效转换长格式的十进制值时,c#中的类型转换错误,c#,C#,我使用的是STRIPE API,当我传递除小数以外的任何数值时,如果我将20作为paymentDto.amount提供给此代码,则它对ex有效 PaymentIntentCreateOptions options = new PaymentIntentCreateOptions { Amount = Convert.ToInt64(paymentDto.Amount) * 100,
PaymentIntentCreateOptions options = new PaymentIntentCreateOptions
{
Amount = Convert.ToInt64(paymentDto.Amount) * 100,
Currency = "usd",
Customer = customerStripeId
};
它工作正常,但当我尝试给出20.25时,它会给出错误“输入字符串的格式不正确。”
注:
我乘以100是因为这是条带API的要求,并且其API中的金额数据类型为long
请帮助。这就是原因:
所需金额本PaymentIntent拟收取的金额。
一个正整数,表示在最小值中要充电多少
货币单位(例如,100美分收取1.00美元或100美分收取100元人民币,
零十进制货币)。最低金额为0.50美元或同等金额
掌管货币。金额值最多支持八位数字
(例如,美元费用为9999999美元,价值为9999999美元)
您可以在他们的文档中找到:
因此,解决方案是将美元金额改为美分
class Program
{
static void Main(string[] args)
{
var cents = ConvertDollarsToCents(100.10m);
Console.WriteLine(cents);
}
public static int ConvertDollarsToCents(decimal dollars)
{
return (int)(dollars * 100);
}
}
输入:
100.10
输出:
10010
十进制值不是整数值。当你把<代码> 20.25代码>代码转换成不能代表<代码> 25的代码>组件时,你认为应该发生什么?你是否认为20.25不是<代码> Int64 < /代码>?因为这将由android设备发送到我的API