c# - 检测字符串是否有小数

标签 c# string

我在标题中打印了一个具有数值的字符串,其中一些有小数点,而另一些则没有。我想要做的是打印带有小数点的值(如果存在)并在前面添加“$”;否则,只打印值但取小数部分“.00”

这是我的代码:

var listDay = data.Where(c => c.Fecha >= actualDate && c.Fecha <= actualDateMax).ToList();
var haveDataDay = listDay.Count() > 0;

    <h4 class="semi-bold">
        @if (haveDataDay)
        { @valueDateDay.ToString("F2") }
        else
        { @this.FP("lbl.loader.nodata") }
    </h4>

我的一些值(value)观是:

2112.34
99.00
20.00
456.12

我正在寻找的输出是:

$2,112.34
99
20
$456.12

最佳答案

可以通过判断小数除以1后是否有余数来检测小数是否为整数:

99 % 1 == 0 // true
456.12 % 1 == 0 // false

因此,您的最终代码可能如下所示:

valueDateDay.ToString(valueDateDay % 1 == 0 ? "N0" : "C2");

更新:鉴于这可能不适用于 float 或其他文化,正如评论中所指出的,使用 % 1 < epsilon 可能更安全,其中 epsilon 是一些小数字(因为这似乎成为货币,代表无形数量的东西,比如 0.0000005 ,它应该处理 float 问题):

valueDateDay.ToString(valueDateDay % 1 < 0.0000005 ? "N0" : "C2");

如果你的应用程序是国际化的,但你想使用明确的货币格式,那么替换它也很容易,可能是这样的:

string.Format(valueDateDay % 1 < 0.0000005 ? "{0:N0}" : "${0:#,0.00}", valueDateDay);

关于c# - 检测字符串是否有小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251599/

相关文章:

c# - 从文本框中输入的字符串中读取所有字符,不重复并计算每个字符

java - 从字符串数组中(快速)获取字符串

c++处理irc bot的recv函数中的多个字符串

java - 如何在 Java 中比较字符串?

c# - 通过局部 View MVC3 传递模型

c# - 以表格形式显示今天的日期(asp.net core)

c# - 我应该如何在线程之间同步?

c# - LINQ 如何在 lambda 表达式中选择超过 1 个属性?

c# - 如何在 C# 中通过 ref 传递它?

c - 根据 C 中的几个设置词拆分字符串的最简单方法