1

**更新我只想在 matlab.as 的浮点部分中使用 2 位数字处理浮点数或双精度数

a=23.1234443434343434454545444;

我想如果我使用它是平等的

a=23.12;

matlab有什么想法吗?

我想要在matlab中像round(1.95583, 2);//return 1.95 (php function)这样的函数

4

2 回答 2

11

如果你想显示只有 2 位数字的值,你可以这样做

>> format bank
>> pi
ans = 
    3.14
>> rand(4)
ans =
      0.81    0.63    0.96    0.96
      0.91    0.10    0.96    0.49
      0.13    0.28    0.16    0.80
      0.91    0.55    0.97    0.14

这并不意味着计算将以较低的精度进行。

如果后者真的是你想要的(为什么?!),你可以使用像这样的结构

ppi = single(pi)

降低精度,或

f = @(x) double(uint64(x*100))/100;

保证 2 位精度。在最后一种情况下,您必须f在使用它们之前通过函数传递所有值:

>> ppi = f(pi)
ans = 
    3.140000000000000
>> f(rand(4)) 
ans =
   0.280000000000000   0.690000000000000   0.440000000000000   0.190000000000000
   0.050000000000000   0.320000000000000   0.380000000000000   0.490000000000000
   0.100000000000000   0.950000000000000   0.770000000000000   0.450000000000000
   0.820000000000000   0.030000000000000   0.800000000000000   0.650000000000000

如果您正在为最后一种情况寻找更优雅的解决方案,请使用定点工具箱,正如 Danil 建议的那样。

于 2012-11-06T14:33:25.637 回答
2

如果您只想保留 N 个数字,则另一种公式是:

>> d = 10^(-2)
>> round(pi/d)*d
ans =
    3.1400

编辑:

根据 Rody 的评论,round 可能无法正确截断,因此请使用:

>> a = 3.146
>> fix(a/d)*d
ans =
    3.1400
于 2012-11-06T14:41:12.153 回答