C#-如何将字符串值转换为小数位?
基本上,我创建了一个表格,我可以选择不同的形状,当选择轨迹栏上的一个值时,计算出圆、三角形或正方形的面积和边界长度 这些值现在有很多小数位,我想设置单选按钮来选择小数位是2、3还是4C#-如何将字符串值转换为小数位?,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) {
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