# Problem adding the large number with small number

13 ビュー (過去 30 日間)
Erkan 2022 年 1 月 8 日
コメント済み: Star Strider 2022 年 1 月 9 日
Hello everyone, I have a problem with adding numbers.
I have two numbers;
a=6.3276e+16 and b=17.3304, when adding these numbers, the result is a, that is, no addition is made.
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Erkan 2022 年 1 月 8 日
How can i solve this issue, thanks in advance

サインインしてコメントする。

### 採用された回答

Star Strider 2022 年 1 月 8 日
The addition is made. It is necessary to display the appropriate precision to see it —
a=6.3276e+16
a = 6.3276e+16
b=17.3304
b = 17.3304
a_plus_b = a + b
a_plus_b = 6.3276e+16
fprintf('%33.25E',a)
6.3276000000000000000000000E+16
fprintf('%33.25E',a_plus_b)
6.3276000000000016000000000E+16
fprintf('%33.25E',a_plus_b - a)
1.6000000000000000000000000E+01
Floating-point numbers aren’t as accurate as necessary in that respect, however thye do their best!
.
##### 5 件のコメント3 件の古いコメントを表示3 件の古いコメントを非表示
Erkan 2022 年 1 月 9 日
Star Strider 2022 年 1 月 9 日
As always, my pleasure!
Espanding on this with the Symbolic Math Toolbox —
a = vpa(sym(6.3276e+16))
a =
63276000000000000.0
b = vpa(sym(17.3304))
b =
17.3304
a_plus_b = vpa(a + b, 30)
a_plus_b =
63276000000000017.3304
So to retain full precision in interim calculations, use symbolic variables.
format long
a_plus_b = double(a_plus_b)
a_plus_b =
6.327600000000002e+16
fprintf('%33.25E', a_plus_b)
6.3276000000000016000000000E+16
The double conversion reverts to double-precision representation. Note that the representation is not the exact value, as computed using symbolic variables.
.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeLogical についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by