MATLAB 整数小数负数十进制转换为十六进制

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

效果:整数小数负数都可以,小数可以自己调精度
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值