2015-04-18 3 views
1

Как написать число/целочисленное значение для мощности 10, например. 1000 как 10^3? Я пишу код, выход которого представляет собой строку очень больших чисел. Мой выход в формате longEng является:Как написать числовые значения в значениях 10?

4.40710646596169e+018 
16.9749211806197e+186 
142.220634811050e+078 
508.723835280617e+204 
1.15401317731033e-177 
129.994388899690e+168 
14.3008811642810e+153 
1.25899227268954e+165 
24.1450064703939e+150 
627.108997290435e+144 
2.03728822649372e+177 
339.903986115177e-066 
150.360900017430e+183 
5.39003779219462e+135 
183.893417489826e+198 
648.544709490386e+045 
19.7574461055182e+198 
3.91455750674308e+102 
6.41548629454028e-114 
70.4943280639616e+096 
19.7574461055182e+198 
3.11450571506133e-009 
249.857950606210e+093 
4.64921904682151e+180 
750.343029004712e+147 

Я хочу, чтобы эти результаты, чтобы быть в формате власти 10 лет, так что я могу легко сделать арифметические операции для моей следующей функции.

+1

Добро пожаловать в переполнение стека! Было бы полезно, если бы вы могли поделиться своим ожидаемым результатом для этого кода. Как результат должен отличаться от того, что вы видите прямо сейчас? – josliber

+1

Просто заявляя очевидное, но эти *** являются *** способностями 10, так что вы хотите делать по-другому? Что касается выполнения арифметических операций, не волнует, в каком формате печатаются числа при выполнении вычислений. – beaker

ответ

0

вы можете написать format shortE и видеть вас выход так:

4.4071e+18 
    1.6975e+187 
    1.4222e+80 
    5.0872e+206 
0

Если вы хотите распечатать данные в научном формате, сам Matlab может сделать это за вас. Если вы можете получить научную форму обозначения как

a * 10^b, 

т.е. получить коэффициент а и показатель степени Ь, вы можете сначала получить б как:

b = floor(log10(abs(x))); 

то в качестве:

a = x * 10^(-b); 
+0

Спасибо, его работа, но все же выход имеет тот же результат, а не выше научного формата. Можете ли вы рассказать мне, как я могу видеть результат в вышеуказанном формате. – prince

+0

вы получаете коэффициент a и показатель b, то вы можете использовать их в своей следующей функции. То, что вы видите, это просто их печать. – leicar

0

из моего понимания вы хотите взять свой номер, например. 4.40710646596169e + 018 и разбить его на:

4.40710646596169 и 018 после того, как вы их разделили, вы можете выполнять операции по своему усмотрению.

Вы можете даже присоединиться к ним, чтобы выглядеть следующим образом: 4.40710646596169^018, если вы так желаете (хотя, чтобы выглядеть так, они были бы строками, и поэтому математические операции над номером были бы NAN).

Поскольку e представляет собой мощность 10 и присутствует во всех перечисленных вами номерах, это простой процесс с множеством решений, вот один.

% format long is very important otherwise it will appear to you that you have 
%lost precision. MATLAB hides precision from view to save screen space and to 
%produce less confusing results to the viewer. (the precision is still there but 
%with format long you will be able to see it. 
    format long 

    x = 4.40710646596169e+018; 

%convert your number into a string, this will allow you to split the number based 
%on the always present e+ 'delimiter' (not really a delimiter but looks like one') 
    s = num2str(x); 

%use strsplit to perform the split in the required place. it will output a 1x2 
%cell 
    D = strsplit(s, {'e+'}); 

%extract each cell to a separate variable. in fact D{1} can be directly used for 
%the input of the next function. 
    D11 = D{1}; 
    D22 = D{2}; 

%convert the separated strings back into numbers with double precision (keep 
%maintin value accuracy) 
    D1 = str2double(D11) 
    D2 = str2double(D22) 

для того, чтобы сделать эту операцию на весь вектор-столбец, это просто вопрос об использовании для цикла перебора всех номеров у вас есть.

Смежные вопросы