2 #include
3
4 using namespace std;
5
6 int main() {
7 long int i = 0x4034000000000000;
8 double d;
9 memcpy(&d, &i, 8);
10 cout << d << endl;
11 }
g++ test_double.cpp && ./a.out
输出:20
Java中十六进制不能直接转化为double 变量,需要先转化为int类型再转化为double类型。
(1)十六进制转化为int类型;
int hexNum = 0xff;
(2)int类型可以直接转化为double类型;
double dNum = hexNum;
代码示例:
public static void main(String[] args) {
Integer hexNum = 0xa;
double dNum = hexNum;
System.out.println(dNum);
}
在Java中 有多中进制的表现形式 ,我们通常用的是十进制的数字,十六进制有其独特的表示方式 。
如: 11 是个十进制的数字, 0xA 就是转为十六进制以后的表现形式 你可以直接采用变量赋值的方式将十六进制的数字转入 double 类型的变量中。
16进制有几位?
反正不管几位进来只要值对,对应当前系统位数跟编译的语言中double占用多少位内存来计算, 与上占用内存位数相应为全1值就行了。
比如C语言中double占用32位,
HEX&0xFFFFFFFF
JAVA double 64位
HEX&0xFFFFFFFFFFFFFFFF
var
n,k:longint;
procedure dg(n,a:longint);
var
x:array[1..16] of longint;
i,j,k,h:longint;
begin
if n<0 then
begin
write('-');
end;
j:=abs(n);
k:=0;
repeat
inc(k);
i:=j mod a;
j:=j div a;
x[k]:=i;
until j=0;
for h:=k downto 1 do
begin
if x[h]<10 then write(x[h])
else write(chr(55+x[h]));
end;
end;
begin
readln(n);
readln(k);
dg(n,k);
end.
输入你要读进去的10进制数,他会自动帮你转化为douoble类型的k进制数