|
|
1
0
除了在强制转换之前将所有值强制转换为双精度值以防止溢出之外,当下限大于0时,您的代码返回错误的结果,因为您没有适当地调整值。这个想法是把范围[以分钟为单位,以最大值为单位]映射到范围[以分钟为单位,以最大值为单位],所以:
设x为要映射的值。算法类似于:
C++中的以下实现是这样做的(我会忘记默认值以使代码更清晰:
注意,我没有取范围大小的绝对值。这允许反向映射。例如,可以将[-1.0,1.0]映射到[3.0,2.0],结果如下:
唯一需要的条件是在分钟内!=in_max(防止被零除)和out_min!=out_max(否则,所有输入将映射到同一点)。为了防止舍入误差,尽量不要使用小范围。 |
|
2
0
尝试
相反。你现在做的是从最小值减去最大值。 数字仍为int类型 -它必然溢出;有符号int从根本上无法表示其最小值和最大值之间的差异。 |
|
|
sungjun cho · 函数模板重叠多个匹配项 1 年前 |
|
|
Amaterastis · 基类接受子类和内部子类的模板参数 1 年前 |
|
|
111111 · 确定作为模板参数传递的函数的参数类型 1 年前 |
|
|
Sam · 在LaTeX中将图像添加到预制的投影仪中 1 年前 |
|
|
user416983 · 模板函数成员作为模板参数 1 年前 |
|
|
PyOPTProblem · c++如何模板化模板参数的部分实例化? 1 年前 |