问题提出
在诸如示波器、频谱仪等常用的电子测量仪器中,当使用游标读波形图上的某个结果数据时,上面显示的每个数据点上的字符串多为“数值+单位前缀+单位”的形式,如“0.0512V”和“50300V”分别表示为“51.2mV”和“50.3kV”,再如“0.00005Hz”和“5030000000Hz”分别表示为“50uHz”和“5.03GHz”等,在这种表达形式中,数值部分取值范围为[0-1000]之间,单位前缀部分为在基准单位的基础上与1000成比例。那么,在C语言中是如何代码实现这个功能的呢?
解决方法
对于这个问题,下面给出一种代码实现的方法,其具体步骤思路为:
(1)定义一个前缀列表数组
(2)将原数值num取绝对值|num|,根据其数值范围作不同的处理
(3)若原值|num|>=1000,则在循环中将原值一直除以1000,直到结果
(4)若原值|num|1为止,得到最后的值num
(5)根据num值及循环次数得到最终需要输出的字符串
函数实现代码如下:
测试代码
使用上面的函数“string Num2Str(double num, string unit)”,对于本文开头提出的例子,完整的测试代码如下:
运行结果如下:
欢迎加关注,多交流。
领取专属 10元无门槛券
私享最新 技术干货