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

Java导出TXT文件时将小数的点替换为逗号的实现方案

解决方法

针对你导出TXT时aaun_md_area列小数分隔符的问题,有两种实用方案:

方案1:字符串直接替换(快速上手)

直接把从数据库取出的字符串里的.替换成,就行,代码改动最小:

把原代码里的这一行:

fw.append(resultSigiop.getString("aaun_md_area"));

改成:

// 判空避免空指针
String areaStr = resultSigiop.getString("aaun_md_area");
fw.append(areaStr != null ? areaStr.replace(".", ",") : "");

这种方式适合确定字段值是标准数值格式(只有一个小数点)的场景,简单高效。

方案2:数值格式化(更严谨)

如果要避免字符串替换的潜在问题(比如字段值格式异常),可以先按数值类型取出,再用格式化工具指定逗号作为小数分隔符:

  1. 先导入需要的类:
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
  1. 在代码开头初始化格式化工具(放在循环外,不要重复创建):
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
// #.## 表示保留两位小数,可根据需求调整格式,比如#.####保留四位
DecimalFormat areaFormatter = new DecimalFormat("#.##", symbols);
  1. 修改取值逻辑:
// 替换原有的getString行
double areaValue = resultSigiop.getDouble("aaun_md_area");
if (!resultSigiop.wasNull()) { // 处理SQL NULL的情况
    fw.append(areaFormatter.format(areaValue));
} else {
    fw.append(""); // 空值时输出空字符串,也可以换成你需要的占位符
}

额外优化提示

  • 原代码里的try-with-resources已经会自动关闭fw,不需要手动调用fw.close(),可以删掉这行代码。
  • 循环里的rts可以用clear()清空,不用每次重新创建新列表,更高效。

整理后的完整代码(用方案2):

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;

// 其他业务代码...

File arquivo = new File(path);

// 初始化小数格式化工具
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
DecimalFormat areaFormatter = new DecimalFormat("#.##", symbols);

try (FileWriter fw = new FileWriter(arquivo)) {
    // 修复表头的分隔符和换行
    fw.append("Width\tArea\n");

    ArrayList<String> rts = new ArrayList<>();
    for (int i = 0; i < listaRt.length; i++) {
        rts.add(listaRt[i]);
        ResultSet resultSigiop = stSigiop.executeQuery(sqlSigiop.replace(":1", 
            rts.toString().replace("[", "").replace("]", "")));
        
        while (resultSigiop.next()) {
            fw.append(resultSigiop.getString("ssrt_cd_status_subitem_rt"));
            fw.append('\t');
            
            // 处理area列的小数分隔符
            double areaValue = resultSigiop.getDouble("aaun_md_area");
            if (!resultSigiop.wasNull()) {
                fw.append(areaFormatter.format(areaValue));
            } else {
                fw.append("");
            }
            
            fw.append('\n');
        }
        fw.flush();
        rts.clear(); // 清空列表复用
    }
} catch (IOException ex) {
    throw ex;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:17:43