gpt4 book ai didi

delphi - 石和磅的格式正确吗?

转载 作者:行者123 更新时间:2023-12-03 15:20:06 25 4
gpt4 key购买 nike

我有一个图表,用于显示重量(以英石和磅 (lbs) 为单位)。

图表由记录中的数据填充,对于权重,数据类型为 Double。

记录数据是在运行时编辑的,我需要知道一种正确格式化输入数据的方法。

为了更好地理解,首先查看这些示例值,它们表示为石和磅:

  • 8.09(8 石 9 磅)
  • 12.03(12 石和 3 磅)
  • 14.16(14 英石和 16 磅)
  • 11.13(11 英石和 13 磅)
  • 17.14(17 英石和 14 磅)

石头只有 14 磅,因此输入的任何超过 0.13 的值都应将石 header value 增加 1,并从 0.00 开始降低磅值 - 因此,考虑到这一点,从上面的示例 2其中的值不正确:

  • 14.16
  • 17.14

它们应该是:

  • 15.02
  • 18.00

是否有内置数学函数可以正确格式化/圆整石头和磅?

如果没有,我真的很想看到一个能够显示解决此问题的逻辑或方法的答案。

我想检查磅部分,如果值 > 0.13,那么我会增加石头,但后来我不确定如何最好地做到这一点,特别是如果该值可能是 13.76 之类的东西,那么我不知道什么将石头和磅改为(这是我开始困惑的地方)。

提前致谢。

最佳答案

对于磅,您可以使用 Frac(weight) 得到小数部分,然后乘以 100。然后使用 Round 得到整数形式:

pounds := Round(100*Frac(weight));

对于石头来说,它只是Trunc:

stones := Trunc(weight);

在另一个方向上:

weight := stones + pounds/100.0;

通过这些功能,您可以轻松完成剩下的工作。大于 14 的磅值的有效性检查很容易处理。例如:

stones := Trunc(weight);
pounds := Round(100*Frac(weight));
stones := stones + pounds div 14;
pounds := pounds mod 14;

如果您在通用库中的任何位置找到此代码,我会感到非常惊讶。那是因为这是一种非常糟糕的储存体重的方法。如果您要使用浮点格式,您应该这样做:

weight := stones + pounds/14.0;

在另一个方向,你会这样做:

stones := Trunc(weight);
pounds := Round(14*Frac(weight));
stones := stones + pounds div 14;
pounds := pounds mod 14;

不幸的是,您仍然需要进行 div/mod 洗牌。例如,想象一下当 weight=9.99 时会发生什么。

这样做可以使浮点值的算术更加合理。例如,假设您测量了 10 个人的体重并想知道总数。使用真正的浮点表示来做到这一点是有意义的,但使用您的表示则不然。

为了看到这一点,假设这 10 个人,他们的重量都为零,即 10 磅。我认识的人都很小。但你可以称之为 0.1。将其中 10 手相加,权重为 1.0。但很明显,实际值(value)是 100 磅,即 7 石两磅。

但是如果你拿 10 磅并将其喂入:

weight := stones + pounds/14.0;

然后您会发现权重值为 10/14。添加 10 批即可得到 100/14,好吧,我相信您明白我的意思了!

存储此类数据的另一种明显方式是磅。整数或 float 都有意义。

关于delphi - 石和磅的格式正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com