delphi – 正确格式化石头和磅?

delphi – 正确格式化石头和磅?,第1张

概述我有一个图表用于显示石头和磅(磅)的重量. 图表由记录中的数据填充,对于权重,数据类型为Double. 记录数据在运行时编辑,我需要知道一种正确格式化输入数据的方法. 为了更好地理解,首先看一下这些样本值,它们表示为Stones和lbs: > 8.09(8颗宝石和9磅) > 12.03(12块石头和3磅) > 14.16(14块石头和16磅) > 11.13(11块石头和13磅) > 17.14( 我有一个图表用于显示石头和磅(磅)的重量.

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

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

为了更好地理解,首先看一下这些样本值,它们表示为Stones和lbs:

> 8.09(8颗宝石和9磅)
> 12.03(12块石头和3磅)
> 14.16(14块石头和16磅)
> 11.13(11块石头和13磅)
> 17.14(17颗宝石和14磅)

石头中只有14磅,所以输入的任何值都超过.13应该将石头值增加1并且从.00开始降低磅值 – 所以考虑到这一点,从上面的样本中得出两个值不正确:

> 14.16
> 17.14

他们应该是:

> 15.02
> 18.00

是否有内置的数学函数可以正确地格式化/圆形石块和磅?

如果不是,我真的很想看到一个答案,显示解决这个问题的方法的逻辑或方法.

我想到检查磅部分,如果值>> 0.13然后我增加了石头,但是后来我不知道如何最好地做到这一点,如果价值可能是13.76那么我就不知道要把石头和磅改成什么(这是我开始混淆的地方我).

提前致谢.

解决方法 对于磅,你得到Frac(重量)的小数部分,然后乘以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 shuffle.想象一下,当重量= 9.99时会发生什么.

这样做可以使浮点值的算术更加合理.例如,假设您已经测量了10个人的权重,并想知道总数.使用真正的浮点表示来实现它是有意义的,但不能用你的表示.

要看到这一点,假设这10个人,他们都是零石头,10磅.我认识的人很小.但你会称之为0.1.加10批,你的重量为1.0.但很明显,实际值是100磅,或7石两磅.

但如果你服用10磅并喂它:

weight := stones + pounds/14.0;

然后你会发现重量值为10/14.添加10个,以获得100/14,好吧,我相信你会得到我的漂移!

存储此类数据的另一种显而易见的方法是磅.整数或浮点都有意义.

总结

以上是内存溢出为你收集整理的delphi – 正确格式化石头和磅?全部内容,希望文章能够帮你解决delphi – 正确格式化石头和磅?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1268797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存