You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CsvHelper TypeConverter格式化数字为两位小数?

CsvHelper导出CSV保留数字两位小数的解决方法

直接通过TypeConverterOption.Format()设置输出格式即可,这是控制数字导出格式的正确方式:

Map(m => m.DonationAmount).TypeConverterOption.Format("0.00");

为什么之前的方法无效?

  • NumberStyles.Currency是用于读取CSV时解析货币格式数字的配置,不影响输出格式,所以对你的导出需求没用。
  • 直接在Map()里写m.DonationAmount.ToString("0.00")会报错,因为CsvHelper的Map方法需要绑定到实体的属性成员,不能直接传入方法调用的结果。

完整示例

假设你的实体类是Donation,对应的映射类可以这么写:

public class DonationMap : ClassMap<Donation>
{
    public DonationMap()
    {
        // 强制保留两位小数输出
        Map(m => m.DonationAmount).TypeConverterOption.Format("0.00");
        // 其他属性映射
        Map(m => m.DonorName);
        Map(m => m.DonationDate);
    }
}

导出时注册这个映射类即可:

var donationsList = GetDonations(); // 你的数据集合

using (var writer = new StreamWriter("output.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.Context.RegisterClassMap<DonationMap>();
    csv.WriteRecords(donationsList);
}

如果需要输出带货币符号的格式,可以把格式字符串换成"C2",比如:

Map(m => m.DonationAmount).TypeConverterOption.Format("C2");

内容的提问来源于stack exchange,提问作者bph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:01:08