将连续的双精度范围转换为离散的整数范围
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);
}
这不是为指定测试提供解决方案,而是为特定值提供确定性答案。
多次将一个字节转换回一个值,反之亦然,输出始终保持不变。
这就是我们的应用程序所需要的。
我想将连续范围的双精度值 [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);
}
这不是为指定测试提供解决方案,而是为特定值提供确定性答案。 多次将一个字节转换回一个值,反之亦然,输出始终保持不变。 这就是我们的应用程序所需要的。