#JavaScript (ES6), 99 bytes
Takes input as a string. Returns a float.
s=>+(s[0]>1?0+s:s).replace(/(.)(\.?)([0189])(.*)/,(_,a,b,c,d)=>[+a+c>>3]+(b||0)+d.replace(/\d/g,0)) #JavaScript (ES6), 99 bytes
Takes input as a string. Returns a float.
s=>+(s[0]>1?0+s:s).replace(/(.)(\.?)([0189])(.*)/,(_,a,b,c,d)=>[+a+c>>3]+(b||0)+d.replace(/\d/g,0))