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

标签 c# string format devexpress

我正在尝试正确格式化一些 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/

相关文章:

c# - 如何将 EF 与 SQLite 和 Visual Studio 2013 结合使用

python - 如何在不使用 eval 的情况下替换字典值中的字符串?

Python 字典到字符串

c++ - 如何使用 cout 在 C++ 中打印 CStringList

hadoop - 命令格式hdfs中的错误

c# - 访问其他 Twitter 用户信息

c# - 使用 tweetsharp 避免 Twitter 的登录提示

c# - 如何制作可点击的文本

c# - 将数据表值分配给变量

javascript - 在类似于 C# 的 JavaScript 中格式化数字