Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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_Format_Decimal - Fatal编程技术网

C#-如何将字符串值转换为小数位?

C#-如何将字符串值转换为小数位?,c#,string,format,decimal,C#,String,Format,Decimal,基本上,我创建了一个表格,我可以选择不同的形状,当选择轨迹栏上的一个值时,计算出圆、三角形或正方形的面积和边界长度 这些值现在有很多小数位,我想设置单选按钮来选择小数位是2、3还是4 private void sliderBar(object sender, EventArgs e) { textBox3.Text = trackBar1.Value.ToString(); if(circleButton.Checked == true) {

基本上,我创建了一个表格,我可以选择不同的形状,当选择轨迹栏上的一个值时,计算出圆、三角形或正方形的面积和边界长度

这些值现在有很多小数位,我想设置单选按钮来选择小数位是2、3还是4

private void sliderBar(object sender, EventArgs e)
{

        textBox3.Text = trackBar1.Value.ToString();

        if(circleButton.Checked == true)
        {
            textBox2.Text = (circle.getArea(trackBar1.Value)).ToString();
            textBox1.Text = (circle.getBoundLength(trackBar1.Value)).ToString();
        }
        else if(squareButton.Checked == true)
        {
            textBox2.Text = (square.getArea(trackBar1.Value)).ToString();
            textBox1.Text = (square.getBoundLength(trackBar1.Value)).ToString();
        }
        else
        {
            textBox2.Text = (triangle.getArea(trackBar1.Value)).ToString();
            textBox1.Text = (triangle.getBoundLength(trackBar1.Value)).ToString();
        }

        if (decimalPlaces2Button.Checked == true)
        {
            TextBox2.Text = decimal.Round(textBox2, 2, MidpointRounding.AwayFromZero).ToDouble();

        }
}
你可以用


首先使用“convert.ToDecimal”将字符串转换为十进制。然后使用“Math.Round”将小数四舍五入(小数点后2、3或4位)

您可以使用以下选项:

    decimal convertedValue;
    decimal.TryParse(textBox2.Text,out convertedValue);
   textBox2.Text = Math.Round(convertedValue, 2).ToString();

这里有一个有效的解决方案,它不会对你的数字进行四舍五入

static double TakeDecimals(double value, int decimalCount)
    {
        var truncation = Math.Pow(10, decimalCount);
        return Math.Truncate(value * truncation) / truncation;
    }

var input=24.343545;
TakeDecimals(input, 2);//24.34
TakeDecimals(input, 3);//24.343
TakeDecimals(input, 4);//24.3435
更新


在您的例子中,如果有一个字符串,您可以在调用该方法之前执行
Convert.ToDouble(您的字符串)

Decimal.ToDouble()可以接受一个参数。只需查看MSDN文章中的方法。Convert.ToDecimal(value)有一个输入错误,
TextBox2.Text=decimal.Round(TextBox2,2,middpointrounding.AwayFromZero)。ToDouble()
应该是
TextBox2.Text=decimal.Round(TextBox2.Text/*此处*/,2,中点舍入.AwayFromZero)。ToDouble()
@Callumlington给出了一个错误:“decimal.Round(decimal,int,System.MidpointRounding)”的最佳重载方法匹配有一些无效的参数EAH,因此您需要将
textBox2.Text
Double.Parse(textBox2.Text)
so,textBox2.Text=Math.Round(value,2)?但是该值已经是字符串了吗?它给出了一个错误,说明“名称”值“在当前上下文中不存在”“我应该输入什么来代替值?您认为呢?您需要使用hi@Nat解析Textbox2.Text值您指定了一个字符串编号,但在我的程序中,这个数字的形式将根据跟踪条上的标记是decimal number1=Convert.ToDecimal(textBox2.Text)的位置而改变;如上所述使用字符串值。它已接受代码,但不会在以下格式的文本框中更新代码:{decimal number1=Convert.ToDecimal(textBox2.text);decimal numWithTwoDecimalPlace=Math.Round(number1,2);textBox2.text=numWithTwoDecimalPlace.ToString();}catch(Exception ex){throw ex;}@Math.Round(convertedValue,2);给我一个错误,说明无法将类型“decimal”隐式转换为“string”。抱歉,只需使用toString():textBox2.Text=Math.Round(convertedValue,2)。toString();这一切都在一行中吗?
static double TakeDecimals(double value, int decimalCount)
    {
        var truncation = Math.Pow(10, decimalCount);
        return Math.Truncate(value * truncation) / truncation;
    }
var input=24.343545;
TakeDecimals(input, 2);//24.34
TakeDecimals(input, 3);//24.343
TakeDecimals(input, 4);//24.3435