C语言编程系列003——将数值转为带国际单位的字符串方法1

问题提出

在诸如示波器、频谱仪等常用的电子测量仪器中,当使用游标读波形图上的某个结果数据时,上面显示的每个数据点上的字符串多为“数值+单位前缀+单位”的形式,如“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)”,对于本文开头提出的例子,完整的测试代码如下:

运行结果如下:

欢迎加关注,多交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904A0USF200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券