如何将单位的价值转换为其他单位?

How I can convert the value of a unit into an other unit?

提问人:Stefan B. 提问时间:7/27/2023 最后编辑:Stefan B. 更新时间:7/27/2023 访问量:30

问:

我必须将旧单位的值转换为新单位。

旧单位可以是mg/l,新单位可以是ug/ml。oldValue 为 8 mg/l。当我使用谷歌的转换器时,它向我显示该值没有改变。在我的计算中,该值从 8mg/l 变为 1 ug/ml,这绝对是错误的。

很可能我使用了不正确的公式来计算新值。

这是我目前的方法:

首先,我声明了带有对象和效力的可能单位:

  private potenciesMass = {
    kg: 1,
    g: 1000,
    mg: 1000000,
    µg: 1000000000,
    ug: 1000000000,
    pg: 1000000000000,
  };

  private potenciesCapacity = {
    l: 1,
    dl: 10,
    ml: 1000,
    ul: 1000000,
    nl: 1000000000,
    pl: 1000000000000,
    fl: 1000000000000000,
  };

在下一步中,我读出每个单位的效力,并用它们计算新值。最后,我将这两个值相除。

 let potencyFirstOld = this.getPotencyValue(oldUnitSplitted[0]);
        let potencyFirstNew = this.getPotencyValue(newUnitSplitted[0]);

        // Second Unit
        let potenceySecondOld = this.getPotencyValue(oldUnitSplitted[1]);
        let potenceySecondNew = this.getPotencyValue(newUnitSplitted[1]);

        let firstValue = this.convertMultipleTypes(
          potencyFirstOld,
          potencyFirstNew,
          value
        );

        let secondValue = this.convertMultipleTypes(
          potenceySecondOld,
          potenceySecondNew,
          value
        );

        value = firstValue / secondValue;

有谁知道我如何按单位将旧值转换为新值?

编辑:新代码

  private convertMultipleTypes(
    potencyOld: number,
    potencyNew: number,
    value: number
  ): number {
    let potenceDifference = 0;
    let potence: number;

    if (potencyOld < potencyNew) {
      potenceDifference =
        potencyNew.toString().length - potencyOld.toString().length;
      potence = this.calculatePotence(potenceDifference);
      return value / potence;
    }

    potenceDifference =
      potencyOld.toString().length - potencyNew.toString().length;
    potence = this.calculatePotence(potenceDifference);
    return value * potence;
  }

  private calculatePotence(potenceDifference: number): number {
    let potence = "1";

    for (let i = 0; i < potenceDifference; i++) {
      potence += 0;
    }

    return Number(potence);
  }
数学 计量单位

评论

0赞 Hans Kesting 7/27/2023
启动调试器并检查各种中间值。他们是你所期望的吗?我假设这是javascript,所以整数除法没有问题吗?
0赞 Stefan B. 7/27/2023
是的,你是对的。我已经调试过了,这里有一个例子,我想计算从单位 mg/l 到 g/l 的值: mg 的效力是 1000000 g 的效力是 1000 在 convertMultipleTypes 函数中,我检查旧单位的效力是否小于新单位的效力。如果旧效力小于新效力,我会计算出效力差异并用此除以该值。如果效力旧高于效力新,我也计算出效力差异并将值乘以此。它跳入 Multiply 块,计算 8 * 效力
0赞 Stefan B. 7/27/2023
我刚刚将函数 convertMultipleTypes 和 calculatePotence 添加到我的条目帖子中。
0赞 Stefan B. 7/27/2023
下面是调试输出的图片: ibb.co/WnjFmzq

答: 暂无答案