当前位置:首页 > AI技术 > 正文内容

开发C#怎么控制小数点位数 C#如何进行浮点数格式化妙招案例|Duuu笔记

admin2个月前 (04-04)AI技术57

前端进阶技巧:本文深入解析

ToString("F2") 默认采用银行家舍入(四舍六入五成双),如2.555→"2.56"、2.655→"2.66";需传统四舍五入应先用Math.Round(x,2,MidpointRounding.AwayFromZero);金融计算务必使用decimal类型避免浮点误差。

ToString("F2") 会四舍五入,但不是所有场景都适用

直接用

ToString("F2")

是最常见做法,但它默认按“银行家舍入”(四舍六入五成双)处理,比如

2.555.ToString("F2")

得到的是

"2.56"

,而

2.655.ToString("F2")

却是

"2.66"

—— 看似合理,但财务或报表场景常要求严格“四舍五入到偶数以外的规则”,这时它就不够用了。

实操建议:

纯展示且接受银行家舍入:用

value.ToString("F2")

$"{value:F2}"

需要传统四舍五入(如数学考试场景):先调用

Math.Round(value, 2, MidpointRounding.AwayFromZero)

,再转字符串

注意

double

本身存在精度误差,

0.1 + 0.2

不等于

0.3

,格式化前最好确认原始值是否已按需截断或修正

string.Format 和插值字符串里的 "N2" 与 "F2" 差在哪

"N2"

"F2"

都能输出两位小数,但前者带千位分隔符和本地化符号,后者只管小数位。比如在中文系统下,

string.Format("{0:N2}", 12345.678)

输出

"12,345.68"

,而

"{0:F2}"

输出

"12345.68"

实操建议:

做金额展示且需符合当地习惯(如加逗号、货币符号):优先用

"N2"

或更明确的

"C2"

(Currency)

做日志、API 返回、数据库写入等对格式敏感的场景:用

"F2"

,避免意外插入分隔符导致解析失败

"C2"

依赖当前线程的

CultureInfo

,若服务跨区域部署,建议显式传入

CultureInfo.InvariantCulture

防止环境差异

Math.Round 的第三个参数容易被忽略

Math.Round(3.45, 1)

默认返回

3.4

,不是

3.5

—— 因为它的默认舍入模式是

MidpointRounding.ToEven

(即“向偶数舍入”)。很多开发者卡在这儿,以为函数坏了。

Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

实操建议:

明确要“远离零”的四舍五入:必须写全三个参数,如

Math.Round(x, 2, MidpointRounding.AwayFromZero)

不要对

float

直接用

Math.Round

,先转

double

decimal

,否则浮点误差会放大舍入偏差

如果目标是“截断”而非“舍入”(比如只要前两位小数,不进位),别用

Round

,改用

Math.Truncate(value * 100) / 100

decimal 才是金融计算的正确起点

double

做金额计算再格式化,哪怕显示看着对,中间过程可能已经失真。比如

19.99m + 0.01m == 20.00m

永远成立,但

19.99 + 0.01 == 20.00

double

下大概率是

false

实操建议:

只要涉及钱、税率、百分比累计等需精确小数运算的场景,变量类型从一开始就用

decimal

decimal

的格式化行为和

double

一致(

"F2"

Math.Round

等都可用),但底层无二进制表示误差

从数据库读取时注意字段类型匹配:SQL Server 的

decimal(18,2)

应映射为 C# 的

decimal

,不是

double

float

事情说清了就结束。格式化只是表象,真正决定结果的是你用什么类型存、怎么算、以及要不要让舍入规则透明可控。

相关文章

【大模型应用开发

二、大模型的泛化与微调 模型的泛化能力:是指一个模型在面对新的、未见过的数据时,能够正确理解和预测这些数据的能力。在机器学习和人工智能领域,模型的泛化能力是评估模型性能的重要指标之一。...

神经网络中的单层神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 看一个经典的神经网络。这是一个包...

几种主要的神经网络

卷积神经网络的输入为二维的像素整阵列,输出为这个图片的属性,当网络训练学习后,所输入的图片或许经过稍微的变换,但卷积神经网络还是可以通过识别图片局部的特征而将整个图片识别出来。 :该层...

深入理解优化:如何利用 Gemini 3.1 的阶梯计费策略?企业级大规模调用实务完全指南|Duuu笔记

需深入理解Gemini 3.1阶梯计费与调用联动关系,通过识别阶梯区间、请求级Token预估截断、多模型路由调度、响应缓存去重、项目拆分配额绑定五种路径优化成本。 ☞☞☞AI 智能聊天, 问答助手,...

前端开发实战详解:骡子快跑如何生成会议纪要 骡子快跑语音转文字整理技巧最佳实践|Duuu笔记

使用听脑AI转写、骡子快跑生成纪要、影子跟读校验、自定义术语词典及EcomGPT-CNN情绪风险分析,五步实现会议纪要高效精准产出。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量...

大模型超详细盘点!常用的大模型及其优缺点、有潜力的大模型、国内大模型行业落地的现况、国内大模型优势、挑战与前景

除了上述大模型外,还有一些有潜力的大模型值得关注,如: 华为云——盘古大模型 :华为基于Transformer架构打造的超大规模人工智能模型,具有万亿级别参数,可以在图像、语音...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。