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

如何将数字格式化为指定小数格式的字符串?(附场景示例)

解决方案

首先,你的现有代码存在两个明显问题:

  1. Regex.Replace(VerkaufspreisInput.Text, 12) 语法完全错误,Regex.Replace需要匹配模式和替换值参数,你应该先把输入文本解析为数值类型,而非用正则处理。
  2. 直接使用{0:0.00}会强制保留两位小数,无法满足你“0.2保留为0.2”的特殊需求。

针对你的格式化规则,我们可以分情况处理:

步骤1:解析输入为数值类型

优先用decimal类型避免浮点精度问题:

if (!decimal.TryParse(VerkaufspreisInput.Text, out decimal number))
{
    // 处理输入无效的情况,比如提示用户输入合法数字
    return;
}

步骤2:按规则格式化

根据你给出的规则,我们可以通过判断小数部分的有效位数来选择格式化方式:

string formatted;
decimal integerPart = Math.Truncate(number);
decimal fractionalPart = number - integerPart;

// 计算小数部分的有效位数(去掉末尾的0)
int effectiveDecimalPlaces = fractionalPart == 0 
    ? 0 
    : fractionalPart.ToString().Split('.')[1].TrimEnd('0').Length;

if (effectiveDecimalPlaces == 0)
{
    // 整数,显示为 xx.00
    formatted = number.ToString("0.00");
}
else if (effectiveDecimalPlaces == 1)
{
    // 一位小数:整数部分为0时保留一位(如0.2→0.2),否则补0为两位(如1.3→1.30)
    formatted = integerPart == 0 
        ? number.ToString("0.0") 
        : number.ToString("0.00");
}
else
{
    // 两位及以上小数:先截断到两位(注意是截断不是四舍五入),再格式化
    decimal truncated = Math.Truncate(number * 100) / 100;
    formatted = truncated.ToString("0.00");
}

规则验证示例

输入值输出结果
1212.00
1.31.30
0.20.2
3.4543.45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:20:36