我有两个刻度,一个是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值,但对于介于两者之间的值却没有。我认为我的逻辑正确,但认为它的类型转换错误。请帮帮我。
答案 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