将连续的双精度范围转换为离散的整数范围

Convert a continuous range of doubles to a discrete int range

我想将连续范围的双精度值 [10.0,20.0] 映射到 [100,200] 范围内的字节;

以下必须适用(即使多次来回转换):

convertToByte(convertToDouble(y)) == y

谢谢。

在问题评论的帮助下,我们使用以下代码:

int convertToByte(
    double initial,
    double minValue,
    double maxValue,
    int minByte,
    int maxByte,
  ) {
    double value = initial - minValue;
    double valueRange = maxValue - minValue;
    int byteRange = maxByte - minByte;
    double valueSteps = valueRange / byteRange;
    double byte = (value / valueSteps);
    return (minByte + byte.round()).clamp(minByte, maxByte);
  }

不是为指定测试提供解决方案,而是为特定值提供确定性答案。 多次将一个字节转换回一个值,反之亦然,输出始终保持不变。 这就是我们的应用程序所需要的。