c#中int向float型转换。
c#中int向float型转换:
1、用Convert方法。Convert.ToInt32(string),括号里的是需要转换的字符串。
2、Int32.Parse(string)和Int.Parse(string)。
3、Int32.TryParse(string,out int result)或int.TryParse(string,out int result)来转换。
TryParse的返回值是一个bool类型的值,指示是否转换成功,转换成功后第二个参数就是已经转换成功的值:
int result;
if(Int32.TryParse("20", out result))
{ //转换成功 }
else { //转换失败 }
扩展资料
当在int(假设int是32位的)、float和double格式之间进行强制类型转换时,原则如下:
从 int 转换成 float,数字不会溢出,但是可能被舍入。
从 int、float 转换成 double,能够保留精确的数值。因为 double 有更大的范围和更高的精度(有效位数)。
从 double 转换成 float,因为 float 范围要小一些,所以值可能溢出成 +∞ 或 -∞。另外由于float精度较小,还可能被舍入。
从 float、double 转换成 int,值将会向零舍入。如1.999会被转成1,-1.999会被转成-1。同时值可能会溢出。
参考资料来源:百度百科—c#
第一点:从int(System.Int32)到float转换精度会降低。如下代码:
static void Main(string[] args)
{
Int32 number = Int32.MaxValue;
Console.WriteLine(number);
Console.WriteLine((float)number);
Console.ReadLine();
}
输出为:
2147483647
2.147484E+09
明显有效位数减少。
第二点:MSDN中有如下描述:
可在一个表达式中兼用数值整型和浮点型。在此情况下,整型将转换为浮点型。根据以下规则计算表达式:
如果其中一个浮点型为 double,则表达式的计算结果为 double 类型,在关系表达式或布尔表达式中为 bool 类型。
如果表达式中不存在 double 类型,则表达式的计算结果为 float 类型,在关系表达式或布尔表达式中为 bool 类型。
这样,如果表达式中只有int和float,可能得不到应有的精度,因此应该考虑将float转成double之后再进行运算。
共同探讨~~
参考资料: C#.NET2.0
你可以使用double或decimal
其中double也使用double.ToString("0.000");来控制精度