**更新 我想在matlab.as示例
中的float部分中仅使用2位数处理float或doublea=23.1234443434343434454545444;
我想如果我使用它是相等的
a=23.12;
matlab中的任何想法?
我希望在matlab中像 round(1.95583,2); //返回1.95 (php函数)这样的功能
答案 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