我想将我的字符串值转换为int16并且只显示2个小数位。我已经尝试了下面的内容,但是由于我的字符串值实际上没有被转换,所以它会抛出一个错误吗?
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string number1 = "1234.00011";
Console.Write(number1);
Console.WriteLine();
string r = String.Format("{0:F2}", number1);
Console.Write(Convert.ToInt16(r));
}
}
}
EDIT
抛出错误的行是
Console.Write(Convert.ToInt16(r));
错误是
未处理的类型' System.FormatException'发生在mscorlib.dll
其他信息:输入字符串的格式不正确。
答案 0 :(得分:0)
您对string.Format
的调用是使用浮点格式说明符并提供字符串参数。这些是互不相容的。因此,字符串参数按原样插入到结果中,并存储在r
中,这样您就无法获得所需的两位数舍入。
您可能想要做的是这样的事情:
static void Main(string[] args)
{
string number1 = "1234.00011";
Console.Write(number1);
Console.WriteLine();
var r1 = float.Parse(number1);
string r = String.Format("{0:F2}", r1);
Console.WriteLine(r);
Console.Write((int)r1);
Console.ReadKey();
}
在我的测试中,它产生以下输出:
1234.00011
1234.00
1234
请注意,第二行具有所需的舍入,因为我们为string.Format
提供了浮点值,因此{0:F2}
可以正常工作。第三行没有小数位,因为我们使用了直接强制转换,并且不包含任何浮点数。