专科学前教育专业代码:使用科学前缀(prefix scientific)

我有一个计算 10u Ω 到 200K Ω 范围内的电阻的设备。我想写一段代码将这些数字转换为更简单的读取格式;例如:将 99912.3125 转换为 99.91 K Ω 和 0.010039 转换为 10.04 m Ω。

float num[9] = {100000, 10000, 1000, 100, 10, 1,  0.1, 0.01, 0.001};
float nums[9] =  {99999.9,9999.9,999.9,99.9,9.9,0.9,0.09,0.009,0.0009};
String prefixes[3] = {"mΩ","Ω","KΩ"};
int powers[3] = {-3,0,3};
void setup() {
  Serial.begin(9600);
}
int prefix(int x){
  return (x < 0) ? 0 : (x/3)+1;
}
int decimalPlaces(int x){
  return (x < 0) ? abs(x) : 3-(int(x)%3);
}
void loop() {
  for (int i=0; i<9; i++){
    Serial.print(num[i],6);
    Serial.print("\t");
    if (i>4){
      Serial.print("\t");
    }
    int lg = log10(num[i]);
    int pref = prefix(lg);
    Serial.print(" | ");
    Serial.print(num[i]/pow(10,powers[pref]),decimalPlaces(lg));
    Serial.println(prefixes[pref]);
  }
  Serial.println("##############################");
  for (int i=0; i<9; i++){
    Serial.print(nums[i],6);
    Serial.print("\t");
    if (i>3){
      Serial.print("\t");
    }
    int lg = log10(nums[i]);
    int pref = prefix(lg);
    Serial.print(" | ");
    Serial.print(nums[i]/pow(10,powers[pref]),decimalPlaces(lg));
    Serial.println(prefixes[pref]);
  }
  Serial.println("##############################");
  Serial.println(int(log10(0.1)));
  Serial.println(int(log10(0.9)));
  Serial.println(int(log10(1)));
  while(true);
}

这里是代码的输出:

enter image description here

但是在 milli ohm 和 ohm 范围之间进行更改存在问题。正如您所看到的,log10(0.9)与 log10(1)相同,尽管与 0.1 处于相同的数量级!因此,而不是将 0.9 显示为 900m Ω,而是将其显示为 0.900 Ω,这不是我想要做的。有没有更简单的方法来实现这种类型的格式化?如果不是,我该如何解决这个小错误的问题?

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(745)
买主板套装好还是cpu分开买:Web应用程序-组合还是分开(asp long luxurious full coverage t
上一篇
Eli ge:动态生成 Ge'ezunicode
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 45 54
  • css预编译器: center;}

    CSS预编译器是一种用于构建CSS的工具,它可以将CSS代码转换为更易于管理和维护的格式。它们可以使CSS代码更加灵活,更易于重用,并且可以帮助开发人员更轻松地组织和管理CSS代码。…

    2023-04-30 05:19:08
    0 34 86
  • python中predict函数参数:如何使用Python的predict函数进行机器学习预测

    示例示例predict函数是scikit-learn中的一个函数,用于预测新样本的输出结果。参数:…

    2023-03-30 08:03:12
    0 31 79
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 53 58
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 60 20
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 24 71
  • canvas 官网Bring Your Ideas to Life with Creative Artwork

    Canvas 官网是一个用于创建图形的 HTML5 API,它可以在浏览器中使用 JavaScript 来绘制 2D 图形。它提供了一个可以在网页上绘制图形的强大工具,可以用来创建动画、游戏、数据可视化等。…

    2023-02-28 09:52:08
    0 88 58
  • qt creator快速入门 第3版 pdf从零开始

    Qt Creator快速入门第3版是一本关于Qt Creator的教程书,旨在帮助读者快速掌握Qt Creator的使用。书中介绍了Qt Creator的基本功能,如如何创建项目、编辑代码、调试代码以及创建应用程序等等。书中还提供了一些实例代码,帮助读者更好地理解Qt Creator的用法。…

    2023-05-16 03:03:33
    0 54 30

发表评论

登录 后才能评论

评论列表(85条)