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

标签 matlab simulink

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

最佳答案

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

  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))}})));

丑陋但有效...

关于matlab - 在 Matlab 或 Simulink 中将小数转换为整数。 (不四舍五入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48814805/

相关文章:

c - 是否可以在 C MEX S-Function 中使用可变大小信号?

matlab - 如何裁剪图像并将其旋转到边界框?

c++ - 使用返回结构的第三方 mexFunction 运行 fmincon 时出现问题

matlab - matlab将4字节转换为 float

input - 在 SIMULINK 中以编程方式设置输入端口的值

matlab - 知道何时对内部 Simulink 子系统进行采样

matlab - 将函数转换为 Simulink 模块

matlab - 在Matlab中绘制多条线,无需for循环

java - Matlab-Java MD5 给出错误的哈希值

multithreading - Matlab并行编程