在Matlab或Simulink中将十进制转换为整数。 (不舍入)

时间:2018-02-15 19:23:41

标签: matlab simulink

所以这可能是一个简单的问题。我有一些输入的十进制.12345,我想制作12345.现在这个值可以改变,所以我不想将它乘以100,000。例如,如果传入的值是.123我想要123,如果它是.3219我想要3219.

1 个答案:

答案 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))}})));
丑陋但有效......

相关问题