基本上,我已经创建了一个表单,我可以选择不同的形状,当选择轨迹栏上的值时,可以计算出圆形,三角形或正方形的面积和边界长度。
这些值目前有很多小数位,我想设置单选按钮来选择小数点后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();
}
}
答案 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();