1

** 更新しました float または double を matlab.as example の float セクションで 2 桁のみで扱いたい

a=23.1234443434343434454545444;

私はそれが等しい

a=23.12;

matlabで何か考えはありますか?

round(1.95583, 2); // return 1.95 (php function ) in matlabのような関数が欲しい

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

編集:

ロディのコメントによると、ラウンドは適切に切り捨てられない可能性があるため、次を使用します。

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