所以这可能是一个简单的问题。我有一些输入的十进制.12345,我想制作12345.现在这个值可以改变,所以我不想将它乘以100,000。例如,如果传入的值是.123我想要123,如果它是.3219我想要3219.
答案 0 :(得分:7)
这里有一些可以玩的东西:(假设你的输入是一个数字(双或单)
f=@(x) x*10^sum(floor(x*10.^[0:16])~=x*10.^[0:16])
这假设浮点精度高达16位......
尝试f(.123)
...
另外一个注意事项,输出看起来像一个整数,但它仍然是一个双\单。为了真正使它成为一个整数类,你需要使用uint64(f(x))
或你需要的任何integer type进行投射。
另一个解决方案是使用num2str强制转换为字符串,取出0.并使用str2num强制转换为num:
f=@(x) str2num(subsref(num2str(x),struct('type','()','subs',{{1,3:numel(num2str(x))}})));
丑陋但有效......