使用数字变量,对低于或高于仪器提供的范围(例如TSH < 0.001)的测量结果进行编码的最佳实践是什么?在特定情况下,这是医疗项目所需的,但该问题预计适用于任何类型的测量。在我自己的研究中,我到目前为止还没有找到一个令人满意的解决方案。
通常,这类问题是在医疗数据格式中解决的,例如HL7,但在那里,数值基本上是用字符串表示的。有没有一种有效的方法来处理数字数据类型(除了一个单独的标志变量来指示结果是在、低于还是高于测量范围的分界值)?
优选地,这应该是独立于所使用的处理器体系结构并且与Pascal或Object Pascal兼容的跨平台解决方案,但是也欢迎其他编程语言的优雅的解决方案。
发布于 2021-02-16 21:36:49
在IEEE值的定义中,double
值已经有了一些“特殊值”。
0 11111111111 00000000000000000000000000000000000000000000000000002 ≙ 7FF0 0000 0000 000016
≙ +∞ (positive infinity)
1 11111111111 00000000000000000000000000000000000000000000000000002 ≙ FFF0 0000 0000 000016
≙ −∞ (negative infinity)
您可以对低于或高于范围值重复使用这些“标志”。
每种语言都可以识别这些值,例如,如果我没记错的话,Delphi/FPC Math.pas
单元定义了NegInfinity
和Infinity
:
Infinity = 1.0 / 0.0;
NegInfinity = -1.0 / 0.0;
一方面,它们将被正确地转换为非数字(+INF/-INF
)的文本,因此它可能有助于调试和跟踪这些值。
当然,您应该检测并避免使用这些值进行计算(例如,均值/R²或曲线拟合),这可能会用正确的值破坏您的计算。但结果可能会非常明显地错误(在大多数数学运算中,无穷大将抢占其他值),因此跟踪这个问题可能并不太难。
https://stackoverflow.com/questions/66221882
复制相似问题