如何在matlab中将浮点的变化精度视为5.245556666

时间:2012-11-06 14:15:17

标签: matlab

**更新 我想在matlab.as示例

中的float部分中仅使用2位数处理float或double
a=23.1234443434343434454545444;

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

a=23.12;

matlab中的任何想法?

我希望在matlab中像 round(1.95583,2); //返回1.95 (php函数)这样的功能

2 个答案:

答案 0 :(得分: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

NOT 这意味着计算将以更低的精度执行。

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

这样的结构
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建议的定点工具箱。

答案 1 :(得分:2)

如果你想保留N位数,另一种表述是:

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

编辑:

根据Rody的评论,圆形可能没有正确截断,所以请使用:

>> a = 3.146
>> fix(a/d)*d
ans =
    3.1400