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

时间:2015-02-24 15:23:05

标签: c# string format decimal

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

这些值目前有很多小数位,我想设置单选按钮来选择小数点后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();

        }
}

4 个答案:

答案 0 :(得分:1)

这是一个有效的解决方案,它不会使您的号码变圆。

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(yourString)

答案 1 :(得分:0)

您可以使用Math.Round(double, int32)

Math.Round(value, 2);

答案 2 :(得分:0)

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

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

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

    if (decimalPlaces2Button.Checked == true)
    {
    decimal number1 = Convert.ToDecimal(area);
        decimal numWithTwoDecimalPlace = Math.Round(number1, 2);
            TextBox2.Text = numWithTwoDecimalPlace.ToString();
    }
else if (decimalPlaces3Button.Checked == true)
    {
    decimal number1 = Convert.ToDecimal(area);
        decimal numWithTwoDecimalPlace = Math.Round(number1, 3);
            TextBox2.Text = numWithTwoDecimalPlace.ToString();
    }

答案 3 :(得分:0)

你可以用这个:

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