铸造从双到长,再到双

时间:2013-12-01 20:00:13

标签: c#

鉴于

public long A()
{
    double a = 3.1415296;
    return ??
}

double b = (??) A();

是否可以投射,但不能转换,a这样它会被隐藏在一个长的?

2 个答案:

答案 0 :(得分:6)

是的,您可以使用位转换器执行此操作:

public long A()
{
    double a = 3.1415296;
    return BitConverter.DoubleToInt64Bits(a);
}

method documentation can be found here)。

答案 1 :(得分:1)

是的,您可以将double的实际代表放在long变量中,然后将其取回:

double a = 3.1415296;

long b = BitConverter.ToInt64(BitConverter.GetBytes(a), 0);

double c = BitConverter.ToDouble(BitConverter.GetBytes(b), 0);

例如,您可以将singe放在int中。