在Matlab或Simulink中将十进制转换为整数.(不圆整)

XIG*_*RIX 4 matlab simulink

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

bla*_*bla 7

这里有一些东西可以玩:(假设您的输入是一个数字(双或单)

  f=@(x) x*10^sum(floor(x*10.^[0:16])~=x*10.^[0:16])
Run Code Online (Sandbox Code Playgroud)

假设浮点精度高达16位......

试试f(.123)......

另外注意,输出看起来像一个整数,但它仍然是一个双\单.为了真正使它成为一个整数类,你需要使用uint64(f(x))或者你需要的任何整数类型.

另一个解决方案是使用num2str强制转换为字符串,取出0.并使用str2num强制转换为num:

 f=@(x) str2num(subsref(num2str(x),struct('type','()','subs',{{1,3:numel(num2str(x))}})));
Run Code Online (Sandbox Code Playgroud)

丑陋但有效......

  • 很棒的答案 (3认同)