转换长格式的十进制值时,c#中的类型转换错误

转换长格式的十进制值时,c#中的类型转换错误,c#,C#,我使用的是STRIPE API,当我传递除小数以外的任何数值时,如果我将20作为paymentDto.amount提供给此代码,则它对ex有效 PaymentIntentCreateOptions options = new PaymentIntentCreateOptions { Amount = Convert.ToInt64(paymentDto.Amount) * 100,

我使用的是STRIPE API,当我传递除小数以外的任何数值时,如果我将20作为paymentDto.amount提供给此代码,则它对ex有效

  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