gpt4 book ai didi

c# - 格式化字符串以显示自定义十进制值

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:42 25 4
gpt4 key购买 nike

我正在尝试正确格式化一些 double ,以便它们能够正确显示以供我使用(我正在 Devexpress 中构建一个声明,所以我正在处理大量数字)。

以下是我希望发生的基本格式设置规则:

1000.2  -> 1,000.20
1000 -> 1,000
1000.22 -> 1,000.22

在 C# 中使用字符串格式化是否可行?我尝试了以下方法,但未能实现我的目标:

#,#.## - gives me 1,000.2 for the first value
#,#.#0 - gives me 1,000.00 for the second value
#,#.00 - gives me 1,000.00 for the second value

编辑:更多信息。 DevExpress 使我能够在将值绑定(bind)到报表后使用字符串格式来设置值。我们在报告时执行此操作(而不是在幕后代码中的计算时),因为我们在 DevExpress 提供给我们的表格中使用 Sum 函数。我们这样做的原因是,我们可以通过提取大量数据来最大程度地减少对数据库的调用,然后在语句中反复使用该表并根据其中的限制进行过滤。

编辑编辑:根据我在评论中收到的反馈,仅提供字符串格式无法执行我想执行的格式设置;当我向报告提供数据(然后从报告中删除所有格式)并在代码级别执行所有求和函数时,我需要插入一些代码(以确保总和值具有预期的小数位) ,或者我需要在末尾接受 .00,例如,一定数量的日元(例如,100 日元永远不会表示为 100.00 日元)。

这是一个有点深奥的案例,但很高兴知道!

最佳答案

您可以将字符串格式与简单的 if 条件结合使用。为了缩短它的使用时间,您还可以将其设为扩展方法。它看起来像这样:

public static string FormatConditionnaly(this double input)
{
return input % 1 == 0 ? input.ToString("#,0") : input.ToString("#,0.00");
}

基本上,如果您的数字不包含任何小数(% 1 == 0 检查),您可以将其格式化为不带小数。如果检查失败,则添加两个零。

它是这样使用的:

const double flatNumber = 1000;
string result1 = flatNumber.FormatConditionnaly(); //1,000

const double numberWithDecimals = 1000.5;
string result2 = numberWithDecimals.FormatConditionnaly(); //1,000,50

关于c# - 格式化字符串以显示自定义十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com