我有两个刻度,一个是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的值,但不是两者之间的值。我认为我有正确的逻辑,但认为它错误的类型转换。请帮助我。
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值标度是farenheit,范围是32.0 - 212.0。而你的“长尺度”是从0到100摄氏度。而你想将50华氏度转换为摄氏度
range = 212-32; // 180
offset = 50-32; // 18
tim = (18*100)/180 = 10;
50°F == 10°C