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

如何实现小数仅保留两位小数?

如何实现小数仅保留两位小数?

看起来你是想把一个小数格式化为只显示两位小数对吧?你的思路方向是对的,但问题出在格式字符串的写法上啦~

你之前尝试的代码:

String.Format("{0.0.00}", cats.ToString());

有两个明显的小问题:

  • 格式字符串语法错误:占位符的正确写法是{0:格式规则},要用冒号分隔占位符索引和格式规则,而不是点!你写的{0.0.00}完全不符合格式规范,这就是报错的直接原因。
  • 多此一举的类型转换:如果cats本身是数值类型(比如double、decimal、float),直接传入数值就行,没必要先调用ToString()转成字符串。

给你几个实用的正确解决方案:

1. 最常用:四舍五入后保留两位小数

如果需要四舍五入后固定显示两位小数,推荐用F2格式符:

// 示例:假设cats是数值类型
double cats = 1.2345;
string result = String.Format("{0:F2}", cats);
// 输出结果为 "1.23"

如果你的项目用的是C# 6.0及以上版本,用字符串插值会更简洁直观:

string result = $"{cats:F2}";

2. 带千分位分隔符的格式

如果你的数值较大,需要添加千分位分隔符,可以用N2格式符:

double bigNumber = 1234.5678;
string result = String.Format("{0:N2}", bigNumber);
// 输出结果为 "1,234.57"

3. 直接截断小数(不四舍五入)

如果你想直接舍弃两位之后的小数而不是四舍五入,可以用数学方法处理:

double cats = 1.2345;
double truncatedValue = Math.Floor(cats * 100) / 100;
string result = truncatedValue.ToString("F2");
// 输出结果为 "1.23"

小提醒:如果是对精度要求高的场景(比如金额),建议用decimal类型代替double,能避免很多精度丢失问题。

总结一下:核心就是把格式字符串的语法改对,用{0:格式符}的形式,选对合适的格式符就能轻松实现需求啦!

备注:内容来源于stack exchange,提问作者Isais Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:09:34