如何将浮动比例转换为长尺度?

问题描述 投票:0回答:1

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

java android
1个回答
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值标度是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

© www.soinside.com 2019 - 2024. All rights reserved.