Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-更改小数的数量_C#_String_Decimal_Trim - Fatal编程技术网

C#-更改小数的数量

C#-更改小数的数量,c#,string,decimal,trim,C#,String,Decimal,Trim,我有一个字符串如下所示: TEXT MORETEXT 227.905 174.994 180 1111 TEXT MORETEXT 227.90 174.99 180 1111 TEXT MORETEXT 227.90 174.99 180 1111 TEXT MORETEXT 227.90 174.99 180 1111 我很好奇如何将小数点改为只有两位 因此,我希望它不是上面的字符串,而是: TEXT MORETEXT 227.90 174.

我有一个字符串如下所示:

TEXT  MORETEXT  227.905  174.994  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
我很好奇如何将小数点改为只有两位

因此,我希望它不是上面的字符串,而是:

TEXT  MORETEXT  227.90  174.99  180  1111 #rounding down
有人知道如何抓取这个字符串并将值更改为十进制,然后将十进制值向下修剪吗


编辑:

因此,如果我有一个如下的文件:(注意:该文件有多行)

我想让它进入一个
RichTextBox
,如下所示:

TEXT  MORETEXT  227.905  174.994  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
TEXT  MORETEXT  227.90  174.99  180  1111
我怎么能这么做


EDIT2:

在将RTB上传到
列表框之前,我试图减少RTB中每一行的十进制值。然而,我正在挣扎…

您可以使用:

string[] piecesStringArray = myLine.Split('\t');  //Assuming those are tabs
double d1 = Convert.ToDouble(piecesStringArray[2];
double d2 = Convert.ToDouble(piecesStringArray[3];
double round1 = Math.Round(d1, 2);
double round2 = Math.Round(d2, 2);
//Now recreate your string
string[] myLines = entireFileText.Split(Environment.NewLine);
for(string myLine in myLines)
{
     //Previous code
}
当然,您应该添加错误检查等。如果要反对传统的舍入,请查看Math.Floor()和Math.Ceil()。你需要将数字按十的幂进行缩放,才能使它正常工作

要获取myLine,您可以使用:

string[] piecesStringArray = myLine.Split('\t');  //Assuming those are tabs
double d1 = Convert.ToDouble(piecesStringArray[2];
double d2 = Convert.ToDouble(piecesStringArray[3];
double round1 = Math.Round(d1, 2);
double round2 = Math.Round(d2, 2);
//Now recreate your string
string[] myLines = entireFileText.Split(Environment.NewLine);
for(string myLine in myLines)
{
     //Previous code
}
您可以使用:

string[] piecesStringArray = myLine.Split('\t');  //Assuming those are tabs
double d1 = Convert.ToDouble(piecesStringArray[2];
double d2 = Convert.ToDouble(piecesStringArray[3];
double round1 = Math.Round(d1, 2);
double round2 = Math.Round(d2, 2);
//Now recreate your string
string[] myLines = entireFileText.Split(Environment.NewLine);
for(string myLine in myLines)
{
     //Previous code
}
当然,您应该添加错误检查等。如果要反对传统的舍入,请查看Math.Floor()和Math.Ceil()。你需要将数字按十的幂进行缩放,才能使它正常工作

要获取myLine,您可以使用:

string[] piecesStringArray = myLine.Split('\t');  //Assuming those are tabs
double d1 = Convert.ToDouble(piecesStringArray[2];
double d2 = Convert.ToDouble(piecesStringArray[3];
double round1 = Math.Round(d1, 2);
double round2 = Math.Round(d2, 2);
//Now recreate your string
string[] myLines = entireFileText.Split(Environment.NewLine);
for(string myLine in myLines)
{
     //Previous code
}

您需要遵循以下步骤:

  • 解析字符串,得到一个数字的字符串值
  • 将数字字符串转换为数字类型
  • 用数字进行操作,
  • 生成一个新字符串
  • 每一步都是不同的问题

    要解决第一个问题,您需要知道字符串的格式。总是有这个顺序的数字吗?要解析字符串,可以使用正则表达式或类数组(Split)的方法


    从字符串中提取数字后,可以使用Math类的方法对数字进行四舍五入。您可以编写自己的版本。

    您需要遵循以下步骤:

  • 解析字符串,得到一个数字的字符串值
  • 将数字字符串转换为数字类型
  • 用数字进行操作,
  • 生成一个新字符串
  • 每一步都是不同的问题

    要解决第一个问题,您需要知道字符串的格式。总是有这个顺序的数字吗?要解析字符串,可以使用正则表达式或类数组(Split)的方法



    从字符串中提取数字后,可以使用Math类的方法对数字进行四舍五入。您可以编写自己的版本。

    将字符串作为一行读取,然后使用字符串对象的拆分方法,然后使用字符串对象的拆分方法,然后使用字符串对象的拆分方法,然后使用备注操作:您可以在数学中添加额外的参数。舍入指定要使用的小数位数忘记提及,谢谢。请随意编辑我的答案,使它better@Colithium:我已更新了多行文件的问题/
    RichTextBox
    。。。代码中会有什么变化?我添加了如何分割行。我假设您了解StringBuilder,您将使用它来重建分配给rtb的字符串。@colithium:实际上我对StringBuilder不太熟悉。。呵呵。我将在上面发布我的代码,其中包含我尝试执行的操作和失败的操作。。POSTEDNote to OP:您可以在数学中添加额外的参数。舍入指定要使用的小数位数忘记提及,谢谢。请随意编辑我的答案,使它better@Colithium:我已更新了多行文件的问题/
    RichTextBox
    。。。代码中会有什么变化?我添加了如何分割行。我假设您了解StringBuilder,您将使用它来重建分配给rtb的字符串。@colithium:实际上我对StringBuilder不太熟悉。。呵呵。我将在上面发布我的代码,其中包含我尝试执行的操作和失败的操作。。POSTED@Peter:如果我有多行,我如何使用正则表达式来实现这一点?您可以添加
    RegexOptions.Singleline
    选项。一点优化:将“[0-9]+([0-9]+)?”更改为“\d+。\d{3}\d*”,因为您只需要处理至少有3位小数的数字。@Petar:这似乎工作不正常。它给了我相同的值,但没有这样做,所以只有2个小数。@theNoobGuy:不确定你在做什么,但上面的代码可以工作-只是运行它。结果是:“TEXT-MORETEXT 227.91 174.99 180 1111\n TEXT-MORETEXT 227.91 174.99 180 1111”@Peter:如果我有多行,我怎么能使用Regex来做这件事呢?你可以添加
    RegexOptions.Singleline
    选项。稍微优化一下:将“[0-9]+([0-9]+)?”改为“\d+。\d{3}\d*”因为您只需要处理至少有3位小数的数字。@Petar:这似乎不能正常工作。它给了我相同的值,但没有这样做,所以只有2个小数。@theNoobGuy:不确定你在做什么,但上面的代码可以工作-只是运行它。结果是:“TEXT MORETEXT 227.91 174.99 180 1111\n TEXT MORETEXT 227.91 174.99 180 1111”