0

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

有没有一种方法可以将文本框“txtTotal”中的项目转换为其中包含“1.1”的项目,该项目将被格式化以保存点之前的数字,然后分配给点变量,然后点将输出“1”?

int points;

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

谢谢您的帮助!

4

5 回答 5

3

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

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

于 2013-01-12T21:06:05.380 回答
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());
于 2013-01-12T21:07:34.727 回答
1

看起来您正在尝试使用currency的字符串格式提取浮点( ) 值的小数部分。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
于 2013-01-12T21:13:36.183 回答
0

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

string points = txtTotal.Text;
points = points.Substring(0, points.IndexOf("."));
MessageBox.Show(points);
于 2013-01-12T21:17:09.060 回答
0

如果文本本身是一种货币格式(看起来是磅),您应该首先获取原始字符串并通过指定货币的 NumberStyle 和适当的文化(例如 en-GB)将其转换为十进制:

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

最后,使用数学方法截断(或四舍五入,如果你想四舍五入):

int finalValue = Math.Truncate(currencyValue);

如果它不是货币格式,而只是普通的双精度格式,那么更直接的双精度解析就足够了:

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

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

于 2013-01-12T21:24:57.203 回答