如何将浮标转换为长刻度?

时间:2019-04-14 05:55:25

标签: java android

我有两个刻度,一个是x值刻度,其浮点值从最小x值开始,以最大x值结束。我将这些值称为min_x和max_x。 我有另一个标度,它的长值从0开始到最大时间值结束,我称之为max_tim值。

如何将浮点型xvalue转换为相应的长时间值?

我已经在android studio上尝试过一些东西,但是获取的值不正确。

private long max_tim,tim;
private float min_x,max_x,x_val;

tim=((long)((x_val-min_x)/(max_x-min_x)))*max_tim;

对于max_x和min_x,我有正确的tim值,但对于介于两者之间的值却没有。我认为我的逻辑正确,但认为它的类型转换错误。请帮帮我。

1 个答案:

答案 0 :(得分:0)

float range = max_x - min_x;  // get the absolute range of the first scale
float offset = x_val - min_x; // normalize the value on the first scale to the absolute range
tim = (long)((offset*max_tim)/range); // convert to the new scale, which is already in absolute values

例如,如果您的x值小数单位为法拉,范围为32.0-212.0。而您的“长期比例”则是从0到100摄氏度。您想将50华氏度转换为摄氏度

range = 212-32; // 180
offset = 50-32; // 18 
tim = (18*100)/180 = 10;

50°F == 10°C