【发布时间】:2018-07-08 12:33:34
【问题描述】:
我正在尝试映射[0.0, 100.0] 范围内的所有Integers。
我知道公式是:
((input - min) * 100) / (max - min)
您可以想象,如果您想映射整个Integer 域,您将不得不使用Integer.MIN_VALUE 和Integer.MAX_VALUE。
double percentage = ((double) input - Integer.MIN_VALUE) * 100 / (Integer.MAX_VALUE - Integer.MIN_VALUE);
这里的问题是Integer.MAX_VALUE - Integer.MIN_VALUE会溢出到-1。
我想出的解决方案是在进行任何操作之前将每个Integer 转换为double
double percentage = ((double) input - (double) Integer.MIN_VALUE) * 100.0 / ((double) Integer.MAX_VALUE - (double) Integer.MIN_VALUE);
double 的部分演员表可以省略,但为了清楚起见,我将全部保留。
有没有更好更简洁的方法来做这个映射?
【问题讨论】:
标签: java casting int double percentage