C# 如果等于“删除十进制格式字符串”;。00“;

C# 如果等于“删除十进制格式字符串”;。00“;,c#,string-formatting,C#,String Formatting,我在尝试取出字符串的小数部分时遇到了很多问题, 在我看来,字符串来自一个var类型,如下所示: var temp = dashList[index]; @PrintSection(actualDate, Model, String.Format("{0:0.000}", temp.Rubro))** temp.Rubro是我的字符串部分,可以是“.00”或“.XX” 但是,仅当字符串的值为“.00” 因为我有一些dashlist的值有重要的小数部分 是否只有当字符串的小数部分等于“.00

我在尝试取出字符串的小数部分时遇到了很多问题, 在我看来,字符串来自一个var类型,如下所示:

 var temp = dashList[index];
  @PrintSection(actualDate, Model, String.Format("{0:0.000}", temp.Rubro))**
temp.Rubro是我的字符串部分,可以是“.00”“.XX”

但是,仅当字符串的值为“.00”
因为我有一些dashlist的值有重要的小数部分

是否只有当字符串的小数部分等于“.00”时,才有方法获取该字符串的小数部分

我试图获得的输出是:

From XX.00 -> XX
From XX.12 -> XX.12
这两种都在我的列表中

您可以尝试使用

String.Format("{0:G29}", decimal.Parse(temp.Rubro)))
然而,以下所有格式实现相同的结果

string.Format("{0:G29}", decimal.Parse("2.00"))
decimal.Parse("2.00").ToString("G29")
2.0m.ToString("G29")
您可以将
ToString()
General(“G”)格式说明符一起使用,以获得所需的结果。以指定的精度使用此格式字符串时,尾随零将被截断。为了防止在任何情况下进行舍入,您需要将精度设置为小数允许的最大值(29)。

您可以尝试使用

String.Format("{0:G29}", decimal.Parse(temp.Rubro)))
然而,以下所有格式实现相同的结果

string.Format("{0:G29}", decimal.Parse("2.00"))
decimal.Parse("2.00").ToString("G29")
2.0m.ToString("G29")
您可以将
ToString()
General(“G”)格式说明符一起使用,以获得所需的结果。以指定的精度使用此格式字符串时,尾随零将被截断。为了防止在任何情况下进行舍入,您需要将精度设置为小数允许的最大值(29)。

尝试以下操作:

var temp = dashList[index];
@PrintSection(actualDate, Model, String.Format("{0:0.000}", temp.Rubro).Replace(".00", ""))
试试这个:

var temp = dashList[index];
@PrintSection(actualDate, Model, String.Format("{0:0.000}", temp.Rubro).Replace(".00", ""))
简单的把戏

您可以解析字符串,它将自动删除小数点 试着跟随

 private static void ParseDouble()
    {
        string sDouble = "12.00";
        double dValue = double.Parse(sDouble);
        Console.WriteLine(dValue.ToString());


        sDouble = "12.14";
        dValue = double.Parse(sDouble);
        Console.WriteLine(dValue.ToString());
    }
您的输出将是

12
12.14
希望这有帮助。

简单的技巧

您可以解析字符串,它将自动删除小数点 试着跟随

 private static void ParseDouble()
    {
        string sDouble = "12.00";
        double dValue = double.Parse(sDouble);
        Console.WriteLine(dValue.ToString());


        sDouble = "12.14";
        dValue = double.Parse(sDouble);
        Console.WriteLine(dValue.ToString());
    }
您的输出将是

12
12.14
希望这有帮助。

我建议您使用非常简单的插拔。我在一些项目中使用过它,到今天为止,我不能抱怨。否则你可以这样做

var x = temp.Replace(".00","").Trim();
我建议您使用非常简单的插拔。我在一些项目中使用过它,到今天为止,我不能抱怨。否则你可以这样做

var x = temp.Replace(".00","").Trim();


在C#中没有“var”类型。编译器只是对你很好,并且认识到你在声明一个
字符串
。一个简单的
替换
应该可以完成这项工作,最重要的是在字符串中找到一个十进制值。首先,“问题”在C中没有“var”类型。编译器只是对你很好,并且认识到你在声明一个
字符串
。一个简单的
替换
应该可以完成这项工作,最重要的是在字符串中找到一个十进制值“问题”首先,我尝试了你的方法,但它给我带来了一个System.FormatException你能发布准确的输入字符串吗?可能与区域性和小数点分隔符有关。该字符串是从列表中生成的,每种方法的结果各不相同,但它们类似于:233293.8900或20.00这两个值对我有效,并给了我以下输出20&233293.89我尝试了你的方法,但它给了我一个系统。格式例外你能发布准确的输入字符串吗?可能与区域性和十进制分隔符有关的内容该字符串是从列表中生成的,每种方法的结果各不相同,但它们类似于:233293.8900或20.00这两个值都对我有效,并给出了以下输出20&233293.89尝试了这一点,但结果仍然相同,所有的结果都是0.00values@ArturoMartinez-我可以看到一个问题,但这不应该影响你所说的结果。
{0:0.000}
在小数点后有三个零,因此替换应该是
.replace(“.000”,“0”)
。然而,这听起来不像你遇到的问题。尽管如此,我还是测试了这个答案,它对我有效。@Arturomatinez-试试这个:
Console.WriteLine(String.Format({0:0.00}),14.Replace(“.00”,”)。它会为我的控制台生成
14
。尝试过这一点,但结果仍然相同,所有的都是.00values@ArturoMartinez-我可以看到一个问题,但这不应该影响你所说的结果。
{0:0.000}
在小数点后有三个零,因此替换应该是
.replace(“.000”,“0”)
。然而,这听起来不像你遇到的问题。尽管如此,我还是测试了这个答案,它对我有效。@Arturomatinez-试试这个:
Console.WriteLine(String.Format({0:0.00}),14.Replace(“.00”,”)。它为我向控制台生成
14
。我尝试了此解决方案,但它为我带来了System.FormatException我尝试了此解决方案,但它为我带来了System.FormatException