|
|
1
0
除了在强制转换之前将所有值强制转换为双精度值以防止溢出之外,当下限大于0时,您的代码返回错误的结果,因为您没有适当地调整值。这个想法是把范围[以分钟为单位,以最大值为单位]映射到范围[以分钟为单位,以最大值为单位],所以:
设x为要映射的值。算法类似于:
C++中的以下实现是这样做的(我会忘记默认值以使代码更清晰:
注意,我没有取范围大小的绝对值。这允许反向映射。例如,可以将[-1.0,1.0]映射到[3.0,2.0],结果如下:
唯一需要的条件是在分钟内!=in_max(防止被零除)和out_min!=out_max(否则,所有输入将映射到同一点)。为了防止舍入误差,尽量不要使用小范围。 |
|
2
0
尝试
相反。你现在做的是从最小值减去最大值。 数字仍为int类型 -它必然溢出;有符号int从根本上无法表示其最小值和最大值之间的差异。 |
|
|
Martin · 按对象中的数值对json数组排序 9 年前 |
|
|
Puntherline · 批处理:重命名文件数字(每次计数) 9 年前 |
|
|
jompom · 如何对包含数字和数字子阵列的多维数组进行展平和排序? 9 年前 |
|
|
Blackjack · 获取PHP字符串中第一个字母之前的所有数字 9 年前 |
|
|
NicChik · 宏正在将数字输入转换为字符。如何将其改回数字? 9 年前 |
|
|
Vae · 为什么我的数字“where条件”不起作用? 10 年前 |
|
|
KatherineD · 将间隔转换为数字 10 年前 |
|
|
user1563825 · 一个对象如何在R中有两个不同的类?[副本] 10 年前 |