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

如何修复格式为字符串的小数列中的格式错误?

优化方案

你的当前代码仅能处理连续两个小数点的情况,但像.2.9这类非连续多小数点、首尾带点的格式错误无法覆盖,且嵌套if逻辑可以进一步简化。这里提供更健壮且简洁的处理方式:

核心思路

  1. 优先处理空值,直接返回DBNull.Value
  2. 对输入字符串做标准化清洗:
    • 去除字符串首尾的小数点
    • 将字符串中所有连续的多个小数点替换为单个
  3. 尝试解析清洗后的字符串,确保覆盖所有提到的异常格式

优化后代码

case int n when n >= 50 && n <= 57:
    if (value == null)
        return DBNull.Value;

    string cleanedValue = value.ToString().Trim('.');
    // 循环替换直到没有连续小数点,处理"2...9"这类多连续点的情况
    while (cleanedValue.Contains(".."))
    {
        cleanedValue = cleanedValue.Replace("..", ".");
    }

    return double.TryParse(cleanedValue, out double result) 
        ? result 
        : DBNull.Value; // 可根据业务需求调整兜底逻辑,比如返回默认值或抛出异常

优势说明

  • 全面覆盖异常格式:.2.9清洗后变为2.9,2..9变为2.9,2.9.变为2.9,甚至2...9也能处理成2.9
  • 逻辑拆分清晰:将清洗和解析步骤分离,代码可读性更强
  • 增加兜底逻辑:避免极端格式导致的转换失败报错,提升代码稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:27:06