c#中如何把string类型转换为double类型?
string shuzi1 = "123.436";
string shuzi2 = Convert.ToDouble(shuzi1);
可却提示:无法将类型“double”隐式转换为“string”。
明明shuzi1我定义的是string类型,它为什么说是double型的?
正确的转换方法是什么?
谢谢!! 展开
Convert.ToDouble(shuzi1)已经是正确的转换方法了,“提示:无法将类型"double"隐式转换为"string"”是因为shuzi2被定义成string类型,所以出现了隐式的转换。
C#是一个强类型的语言,它的数值类型有一些可以进行隐式转换,其他的必须显式转换,隐式转换的类型只能是长度短的类型转换成长的类型,int可以转换成long、float、double、decimal,反之必须显式的转换。
扩展资料:
C#的所有数据类型:
1、基本数据类型
C#拥有比C/C++或者Java更广泛的数据类型.这些类型是bool、byte、ubyte、short、ushort、int、uint、long、ulong、float、double和decimal。
像Java一样,所有这些类型都有一个固定的大小。又像C和C++一样,每个数据类型都有有符号和无符号两种类型。
2、两个基本类
一个名叫object的类是所有其他类的基类。而一个名叫string的类也象object一样是这个语言的一部分。作为语言的一部分存在意味着编译器有可能使用它,无论何时在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。
3、参数传递
方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递。ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值。
4、COM的集成
C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端。C#编写的类可以子类化一个已存在的COM组件。
5、索引下标
一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的。
6、代理和反馈
一个代理对象包括了访问一个特定对象的特定方法所需的信息。只要把它当成一个聪明的方法指针就行了。代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用。
2024-07-18 广告
2017-07-27 · 知道合伙人互联网行家
当对简单的值类型进行转换时,如果是按照 Byte,short,int,long,float,double从左到右(从短到长)进行转换的时候,可以直接进行转换(隐式转换),不用做任何说明。简单的代码示例:
static void Main(string[] args)
{
int a = 10;
long b = a;
Console.Write("b的值为:"+b);
Console.ReadKey();
}
显示转换
依然是对值类型进行转换时,从长字节转换成短字节,直接转换的话,编译器会提示“无法将类型 *转换为类型*,存在一个显示转换”,这时需要进行强制转换(显示转换)。简单的代码示例:
static void Main(string[] args)
{
long a = 10;
int b = (int)a;
Console.Write("b的值为:"+b);
Console.ReadKey();
}
每种数据类型都存在自身的范围,例如byte类型的范围是0~255,int型的范围是0~65535,当int型转换成byte类型时,如果超出了自身的范围时会怎么处理呢?看下代码示例:
staticvoid Main(string[] args)
{
int a = 256;
byte b = (byte)a;
Console.Write("b的值为:"+b);
Console.ReadKey();
}
这段代码的运行结果 “b的值为0”,如果把a的值改为257,则b的值为1。结果是怎么来的,编译器会把256转换成对应的二进制,也就是100000000,当转换成byte类型时(8位二进制数),会长出8位的部分截掉,因此结果变成了0。
toString()转换
当把值类型转换成字符串类型时,可以直接调用值类型的方法toString()进行转换,另外toString还可以将结果转换成相应的进制形式,简单的代码示例:
<span style="font-size:18px;">staticvoid Main(string[] args)
{
//转换为对应的字符串类型
int a = 256;
string b =a.ToString();
Console.Write("b的值为:"+b);
Console.ReadKey();
}
static void Main(string[] args)
{
//转换为十六进制形式(X可以换为小写,代表对应的a-f的大小写)
int a = 256;
string b =a.ToString("X");
//输出结果为“b的值为100”
Console.Write("b的值为:"+b);
Console.ReadKey();
}</span>
parse方法
像int、long、float类型都有parse方法,可以将字符串转换为对应的数据类型,简单的代码实例:
<span style="font-size:18px;">staticvoid Main(string[] args)
{
int a = 256;
string b ="256";
if (int.Parse(b) ==a)
{
Console.Write("a和b的值相等!");
Console.ReadKey();
}
}</span>
Convert类
Convert有很多的转换数据类型的方法,它将继承自Object类型的对象转换为制定的类型,即Convert.toInt32()(还有对应其他类型的转换)。另外的一种方法:Convert.ChangeType(Object,Type),这种方法在涉及到泛型时会显现出优势。
改
double shuzi2 = Convert.ToDouble(shuzi1);
string shuzi1 = "123.436";
string shuzi2 = Convert.ToDouble(shuzi1).ToString();
或:
double shuzi2 = Convert.ToDouble(shuzi1);
即可。