% 输入一个十进制数(小数/整数/负数皆可),输出n位精度的浮点数表示的十进制数
% dec_ 代表输入的十进制数
% acc 代表输入的精度,即acc位精度浮点数
function val = adjustAcc(dec_,acc)
if dec_ >= 0
dec = dec_;
else
dec = -dec_;
end
n = floor(log(dec)/log(2));
m = dec / 2^n - 1;
k = digitAccAdjust(m,acc);
val = (k + 1)*2^n;
if dec_ >= 0
val = val;
else
val = -val;
end
end
function adjustedVal = digitAccAdjust(val, n)
tempBinVal = decimalDEC2bin(val,n);
adjustedVal=decimalBin2DEC(tempBinVal);
end
% 将浮点数转为n位 二进制小数
function y=decimalDEC2bin(a,N)
for i= 1: N
temp=a*2;
y(i)=floor(temp);
a=temp-floor(temp);
end
end
%二进制小数转化位十进制数
function y=decimalBin2DEC(binVal)
y = 0;
L = length(binVal);
for i= 1: L
y = y + binVal(i)*2^(-i);
end
end