计算机技能:C#基础之数据类型转换(c#中的int类型的数据怎么转换成int)
计算机技能:C#基础之数据类型转换
int x; long y = 123456789101112; x = (int)y; Console.WriteLine(x);
输出结果:
我们知道long类型的取值范围是-9223372036854775805~+9223372036854775807;int类型的是:-2147483648~+2147483647
上面的代码中,由于long变量的值超过了int能容纳的最大值,造成了数据的丢失;像这样有可能造成数据丢失或引发异常的任何转换都需要执行显式转换(explicit);
相反的就是执行隐式转换(implicit).
用chencked检查上面的代码
从图得知上面的转换抛出了一个溢出异常,显式转换都可能不安全, (强扭的瓜就是不甜);但是如果
long的值在int的有效值范围内,这样是不会引发异常的.
下面我们再来看个例子:
int i; double d = 6.88; i = (int)d; Console.WriteLine(i);
输出结果:6
像这样发生精度丢失的我们可以把他叫做窄化转换,C#与C或C++不同,在C或C++中是可以直接将i=d的.C#的编译器告诉我们,如果接受精度损失,你就得用显式类型转换.
为什么我们初始化float类型的时候数字的后面都要在数值后面加"F"; 因为C#认为像2.3这样的带小数点的常量是拥有更高精度的'double类型,编译器将因为损失精度
而拒绝而执行。所以在给float赋值时要么显式的将常量转换成float的值,要么直接在常量的后面加"F"(小写的也可以).当然我们一般在处理浮点数的时候最好还是直接使用
double这样就能避免很多类型转换.
现在我们换种方式:
像这样把低精度的值赋给高精度变量,我们就把他叫做宽化转换。
下面来简单说说显式转换的一些限制:
在值类型中,只能在数字、字符(char)、枚举(enum)中转换;
不能把bool直接转换成其他类型,其他类型特不能直接转换成bool类型.
第二部分:字符串与值类型的转换
主要是用到: Parse(),Convert,ToString()
string =》值类型 :
string aa = "123"; int num = int.Parse(aa); double db = double.Parse(aa);
当然parse方法还有很多重载方法,我就不一一列出来了
Convert是不可扩展的,只支持预定义数量的类型;他允许从任何基本类型转换到其他的基本类型
string str = "true"; bool b = Convert.ToBoolean(str) ? bool.Parse(str) : false; Console.WriteLine(b);
输出结果:True
TryParse听说这个东西在1.0版本的时候只有double才有,从2.0才普及的;TryParse()用法也和Parse()方法差不多,只是他返回的是bool值,通过out把值赋给变量
他两的区别:TryParse转换失败不会引发异常,只会返回false;被转换的值是null,或者格式不对、溢出等等情况,
如果是数值类型out出来的值是0,如果是字符类型则是未定义的值,布尔的是false,....
string str1 = "abc",str2 = "123"; int a, b; int.TryParse(str1,out a); int.TryParse(str2,out b); Console.WriteLine(a); Console.WriteLine(b);
输出结果: 0
123
值类型 =》string:
最后就是tostring()方法,任何数据类型你都可以toString一下,而且toString()可以自己定义转换方法,tostring()是平时用的最多的了,这个就不多说了.
ps:写的很乱,想到什么写什么,就当“散文”看吧。
c#中的int类型的数据怎么转换成int
using?System;
namespace?Sample1
{
????class?Program
????{
????????static?void?Main(string[]?args)
????????{
????????????int?var;
????????????byte?var1?=?10;
????????????long?var2?=?100;
????????????//隐式转换:?var1的数据类型取值范围要小于int,任何情况下都可以安全的转换为int
????????????var?=?var1;
????????????/*显示转换:?var2的数据类型取值范围要大于int,需要显示的转换,
?????????????*?转换过程中可能出现溢出情况:当Var2大于int的最大取值时,结果将为int的最大取值?*/????
????????????var?=?(int)var2;
????????????//很多时候显示转换并不能达到我们的期望,这时可以编写方法去进行类型转换
????????????//如使用.net提供的方法:
????????????var?=?Convert.ToInt32(var2);
????????}
????}
}
在C#中如何将STRING型数据强制转换为INT型?
int.Parse 方法或者 int.TryParse方法都可以将一个string类型的数据转换成int类型。
【例1】使用int.Parse方法实现转换,通常需要额外捕获并处理转换时发生的异常
string?s?=?……;
int?result?=?0;
try
{
????result?=?int.Parse(s);
????Console.WriteLine("转换后的整型数值为:{0}",?result);
}
catch
{
????Console.WriteLine("无法完成转换!");
}
【例2】使用int.TryParse方法实现转换,不需要处理额外处理转换时发生的异常
string?s?=?……;
int?result;
if(int.TryParse(s,?out?result))
{
????Console.WriteLine("转换后的整型数值为:{0}",?result);
}
else
{
????Console.WriteLine("无法完成转换!");
}
推荐使用int.TryParse方法!
在C#中如何将int类型强制转换为double类型
double c = 10.1;
int a = (int)c * 10;
方式方法有很多
只要意识到一点,当大类型转换成小类型都有可能出错,只需要类型一致 就可以进行运算了
double c = 10.1;
int a = (int)c * 10;
方式方法有很多
只要意识到一点,当大类型转换成小类型都有可能出错,只需要类型一致 就可以进行运算了
类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:
隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
本文来自网络,不代表生活常识网立场,转载请注明出处:http://sdsy56.com/churuzhichang/41769.html
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:15053971836@139.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
相关阅读