MATLAB 整数小数负数十进制转换为十六进制
function [output] = transfor(input,precision)
% tans D to H
absinput= abs(input);
intquot = fix(absinput);
decimal = absinput - intquot;
decquot = decimal;
%%%%
interset = '';
decset = '';
hex=['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','0'];
%%整数部分
if intquot == 0
interset = '0';
else
while intquot ~= 0
intres = rem(intquot,16);
intquot =fix(intquot/16);
if intres == 0
interset = strcat(hex(16),interset);
else
interset = strcat(hex(intres),interset);
end
end
if input < 0
interset = strcat('-',interset);
end
end
%%小数部分
if decquot ~= 0
i = -1;
simulate = 0;
while 1
A = decquot*16;
decres = A - fix(A);
decquot = fix(A);
if decquot == 0
decset = strcat(decset,hex(16));
else
decset = strcat(decset,hex(decquot));
end
simulate = simulate + decquot*16^(i);
precis = decimal - simulate;
if precis < precision %精度,例:1e-5
break;
end
i = i - 1;
decquot = decres;
end
output = strcat(interset,'.',decset);
else
output = interset;
end
end
效果:整数小数负数都可以,小数可以自己调精度