transfer numerical data end with 'M' and 'B'
1 回表示 (過去 30 日間)
古いコメントを表示
Hi:
I have a numerical data that is for example, 1234567, I can translate to "%f" and "%e" format using Matlab, but I would like to transfer the data to something like this: 1.23M, where "M" represent "million", simliar if the data is even larger, over billion, I can transfer it as "1.2b".
is it possible to do this is Matlab?
Thanks!
Yu
4 件のコメント
Dyuman Joshi
2024 年 3 月 7 日
編集済み: Dyuman Joshi
2024 年 3 月 7 日
No, there is no official MATLAB command that does that. You will have to write the code for it.
You can utilize the hint that I provided above.
P.S - Isn't the symbol for billion supposed to be B and not b?
Stephen23
2024 年 3 月 7 日
編集済み: Stephen23
2024 年 3 月 7 日
As an alternative, you could download and try using my function NUM2WORDS():
It covers the entire DOUBLE range, has many options, and has been extensively tested:
num2words(1234567,'type','highest','sigfig',3)
Note that if you only use the first letter you will have a problem when you reach Quadrillion and Quintillion.
Or you could download my function NUM2SIP():
It provides all of the SI prefixes, and has also been extensively tested:
num2sip(1234567,3)
回答 (1 件)
Chunru
2024 年 3 月 7 日
You can define your own function. Here is an example:
sprintfkmb(12345678)
sprintfkmb(-12345678)
sprintfkmb(-1238)
sprintfkmb(-1234567890123)
function s = sprintfkmb(a)
str = ["", "k", "M", "b"];
e = floor(log10(abs(a)));
e3 = floor(e/3);
e3 = min(e3, 3);
s = sprintf("%.6f%s", a/(10^(e3*3)), str(e3+1) );
end
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!