c#中int向float型转换。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中int向float型转换。相关的知识,希望对你有一定的参考价值。
今天发觉了一个让自己很疑惑的问题。就是在c#中int型可以隐式转换为float型吧,可它的精度只有7位,并且它这个精度是总的位数只有7位,不是说可以精确到小数点后7位吧。可int型的最大值就已经超过了7位了,那它转换的时候不会出现问题吗?我知道float可以表示不int型大的数因为它有阶码。
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#
参考技术A 楼主观察很细微啊。int到float转换精度会降低,如果需要较高精度,应该考虑使用double类型。如下分析:第一点:从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
本回答被提问者和网友采纳 参考技术B float的存储位是32比特,定义其为7位有效数字,这里的7位有效数字是说精度,不是说范围.你可以使用double或decimal
其中double也使用double.ToString("0.000");来控制精度 参考技术C float的精度是指有效数字的位数,不一定是指小数点后位数。float型数据也是用32位存储,由于有阶码,所以损失了部分精度。
float型怎样强制转换成int型
运行时所有数据都存储在内存中,所以相同很正常,float转int会将小数后面的数舍去。
比如定义了一个floata,强制转换成int可写成(int)a。如果是一个表达式,那么只需要将a替换成一个表达式即可。
规格化值:当指数域的8个二进制zhi数字既非全零又非全1时,float数值就是这种情况。
设指数域的八位二进制所表示的十进制数为e, 则公式1中的E就是 E = e - (2^7 - 1)而且此时,将小数域所表示的二进制假设为(f22)(f21)...(f1)(f0) (注2) ,则该小数域所表示的值即为f = 0.(f22)(f21)...(f1)(f0).于是M = 1 + f
扩展资料:
float a=10; // 定义 a为 float 型。
int b=(int)a;// 定义b 为 int 型。然后把 float型的 a 强制转换成 int型。再把a的值 赋值给 b ;
强制转换是指java中的向下转型,因为向下转型的时候会丢失精度。向上转型不需要强制,如:
int a= 10;//定义a为int型。
float b = a; //定义b为float型。然后把a的值赋给b。这种就是向上转型
参考资料来源:百度百科-强制转换
参考技术A 比如你定义了一个float a,强制转换成int可写成(int)a。如果是一个表达式,那么只需要将a替换成一个表达式就OK了。赶紧去试试吧!祝你成功! 参考技术B 这是一个可以转换的程序 照着这样子 改 就差不多了。我试了 可以运行成功!#include<stdio.h>
main()
float i=2.56;
int a;
a=(int)i;
printf("%d\n",a);
本回答被提问者采纳 参考技术C int i;
float a=1.234;
i=a;
或者
i=(int)a;
一种是隐示的一种是显示的 。两种都会截断后面的小数
以上是关于c#中int向float型转换。的主要内容,如果未能解决你的问题,请参考以下文章