在 Matlab 或 Simulink 中将小数转换为整数。 (不四舍五入)

Converting a Decimal to an Integer in Matlab or Simulink. (Not Rounding)

所以这可能是一个简单的问题。我有一些传入的小数点 .12345,我想把它变成 12345。现在这个值可以改变,所以我不想只将它乘以 100,000。例如,如果传入值是 .123,我想要 123,如果是 .3219,我想要 3219。

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

  f=@(x) x*10^sum(floor(x*10.^[0:16])~=x*10.^[0:16])

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

尝试f(.123) ...

补充说明,输出看起来像一个整数,但它实际上仍然是一个 double\single。为了真正使它成为一个整数 class 你需要用 uint64(f(x)) 或任何你需要的 integer type 来转换。

另一种解决方案是使用 num2str 转换为字符串,取出 0。然后使用 str2num 转换回 num:

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

丑陋但有效...