将double转换为int ..我可以删除点后的数字吗?

时间:2013-01-12 20:56:36

标签: c#

我正在尝试转换包含双数字(如“1.1”)的文本框中的项目。有没有一种方法可以对其进行格式化,以便删除“.1”并将其分配给变量“points”?

有没有办法可以从文本框“txtTotal”中转换项目,其中包含“1.1”以进行格式化以保存点之前的数字,然后将其分配给points变量,并指向然后输出“1”?

int points;

txtTotal.Text = string.Format("£{0:0}");
points = Convert.ToInt32(txtTotal.Text);
MessageBox.Show("{points}");

感谢您的帮助!

5 个答案:

答案 0 :(得分:3)

如果您只想删除小数点后的所有数字,请使用Math.Truncate();

http://msdn.microsoft.com/en-us/library/vstudio/c2eabd70(v=vs.110).aspx

答案 1 :(得分:1)

您可以尝试Split小数点上的文本,然后使用£从第一个数组索引中删除TrimStart,我会使用int.TryParse来检查输出是否有效。

像这样:

int points;
txtTotal.Text = string.Format("£{0:0}",txtTotal.Text);
if(int.TryParse((txtTotal.Text.Split('.')[0].TrimStart('£')),out points))
   MessageBox.Show(points.ToString());

答案 2 :(得分:1)

看起来您正在尝试提取浮点double)值的小数部分,其字符串格式为货币

我会做这样的事情:

using System.Globalization; // For NumberStyles enum

var currencyString = txtTotal.Text;

// Parse the TextBox.Text as a currency value.    
double value;
var parsedSuccesfully = double.TryParse(currencyString,
                                        NumberStyles.Currency, 
                                        null,
                                        out value);

// TODO: Handle parsing errors here.

var wholePounds = Math.Truncate(value);
var fractionalPounds = (value - wholePounds);

// Get the whole and fractional amounts as integer values.
var wholePoundsInteger = (int)wholePounds;
var fractionalPoundsInteger = (int)(fractionalPounds * 1000.0); // 3 decimal places

答案 3 :(得分:0)

如果您只想在MessageBox中显示它,可以将其作为字符串处理:

string points = txtTotal.Text;
points = points.Substring(0, points.IndexOf("."));
MessageBox.Show(points);

答案 4 :(得分:0)

如果文本本身是货币格式(磅,从它的外观),你应该首先得到原始字符串并通过指定货币的NumberStyle和适当的文化(例如对于en)将其转换为十进制-GB):

string rawText = txtTotal.Text;
decimal currencyValue = Decimal.Parse(rawText, NumberStyles.Currency, new CultureInfo("en-GB"));

最后,使用Math方法截断(或舍入,如果你想要舍入):

int finalValue = Math.Truncate(currencyValue);

如果它不是货币格式,并且只是简单的双重格式,那么对double的更直接的解析就足够了:

double doubleValue = Double.Parse(txtTotal.Text);
int finalValue = Math.Truncate(doubleValue);

如果格式不一致,可能需要先使用TryParse方法(而不是直接Parse)来处理任何解析问题。