图片缩略图

号码到科学前缀

版本3.2.1 (19 KB) 斯蒂芬。
将数值转换为带有度量前缀的字符串(SI/engineering)。奖金:二进制前缀!

1.3 k下载

更新2020年7月10

查看许可协议

NUM2SIP函数将数字标量转换为带有度量前缀(即SI前缀或工程前缀)的字符串。例如,值1000被转换为'1 k'。

在测试了MATLAB FEX上的metric-prefix提交后(参见致谢),没有找到一个能够正确转换所有值并支持正确SI间距的函数,我编写了自己的函数。金宝app然后对它们进行全面测试,以确认它们实际上给出了正确的输出。

这个提交:
*总是包含空格字符(SI标准所要求的)。
*自动选择最合适的前缀。
*四舍五入到要求的有效数字(默认==5)。
*前缀可以选择为全名('kilo')或符号('k')。
*选项包括或删除尾随的十进制零。
*当需要有效数字时,取整到下一个前缀,例如:'1 M',不是'1000 k'。

###奖励功能###

NUM2BIP函数将数字转换为二进制前缀字符串,例如将值1024转换为“1 Ki”。

NUM2RKM函数将数字转换为RKM代码,例如将值1200转换为'1k2'。

###反向转换###

将以度量为前缀的字符串转换为数字:

<//www.tatmou.com/matlabcentral/fileexchange/53886-scientific-prefix-to-number >

###度量前缀示例###

>> num2sip(10000) OR num2sip(1e4)
Ans = ' 10k '
> > num2sip(10000 4,真的)
Ans = '10公斤'
> > num2sip(10000 4假,真的)
Ans = '10.00 k'

> > num2sip (999 3)
Ans = '999 '
> > num2sip (999 2)
Ans = '1 k'

> > num2sip (0.5 e6)
Ans = '500 k'
> > num2sip (0.5 e6,[],“M”)
ans = '0.5 M'

> > [': ', num2sip (200 e6,[],真的),“瓦特”)
ans = '功率:200兆瓦'

>> sprintf('Clock frequency is %shertz.',num2sip(1234567890,3,true))
ans = '时钟频率为1.23 ghz。'

>> num2sip(sip2num('9 T')) % 9 tera == 9e12 == 9*1000^4
ans = '9 T'

###二进制前缀示例###

>> num2bip(10240) OR num2bip(1.024e4) OR num2bip(pow2(10,10)) OR num2bip(10*2^10) OR num2bip(10*2^10)
ans = ' 10ki '
> > num2bip(10240 4,真的)
Ans = '10 kibi'
> > num2bip(10240 4假,真的)
ans = '10.00 Ki'

> > num2bip (1023 3)
Ans = '1020 '
> > num2bip (1023 2)
ans = '1 Ki'

> > num2bip (pow2 (19))
ans = '512 Ki'
> > num2bip (pow2(19),[],“小姐”)
ans = '0.5 Mi'

> >['记忆' num2bip (pow2(20) 200年,[],真的),“字节”)
ans = '内存:200 mebibyte'

>> sprintf('Data saved in %sbytes.',num2bip(1234567890,3,true))
ans = '数据保存在1.15 gibibytes.'

>> num2bip(bip2num('9 Ti')) % 9 tebi == pow2(9,40) == 9*1024^4
ans = '9 Ti'

###度量前缀###

符号/名称
1000^-8 | y / yocto
1000^-7 | z / zepto
1000^- 6| a / atto
1000^-5 | f / femto
1000^-4 | p / pico
1000^-3 | n / nano
1000^-2 |µ/微
1000^-1 | m /毫厘
1000 ^ 0 |
1000^1 | k / kg
1000^2 | M / mega
1000^3 | G / giga
1000^4 | T / tera
1000^5 | P / peta
1000^6 | E / exa
1000^7 | Z /
1000^8 | Y / yotta

###二进制前缀(IEC 60027-2 A.2和ISO/IEC 80000- 13:08) ### #

符号/名称
1024 ^ 0 |
1024^1 | Ki / kibi
1024^2 | Mi / mebi
1024^3 | Gi / gibi
10 ^4 | Ti / tebi
1024^5 | Pi / pebi
1024^6 | Ei / exbi
1024^7 | Zi / zebi
1024^8 | Yi / yobi

# # # # # #

这些函数已经在许多边缘情况下进行了广泛的测试,特别注意确保所有重要数字的选择都是正确的四舍五入。与MATLAB文件交换中提供的类似提交相比,这些函数正确:
*包括系数和前缀之间的空格字符,即使没有前缀(尝试1)。
*四舍五入到所要求的有效数字(尝试0.999或999e3,有1或2有效数字)。
*为0和前缀范围之外的值返回一个没有前缀的系数(尝试0,Inf, 1E30)。
当有效数字小于3时返回一个没有指数的系数(尝试1e5到1sigfig)。

引用作为

斯蒂芬(2021)。号码到科学前缀(//www.tatmou.com/matlabcentral/fileexchange/33174-number-to-scientific-prefix), MATLAB中央文件交换。检索