Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 根据反转范围计算百分比_Math - Fatal编程技术网

Math 根据反转范围计算百分比

Math 根据反转范围计算百分比,math,Math,我有一个返回倒车档的传感器。也就是说,在100%时,我得到的值为33,在0%时,我得到的值为116 通常我会用这个公式 percentage = (value - min) / (max - min) 但是,由于传感器的值是反向的,我如何修改公式以获得百分比?考虑到: 值:要转换的传感器读数 min:传感器返回的最小值 max:传感器返回的最大值 根据您提供的表达式,百分比可以计算为: percentage = 1 - ((value - min) / (max - min)) 如果做一

我有一个返回倒车档的传感器。也就是说,在100%时,我得到的值为33,在0%时,我得到的值为116

通常我会用这个公式

percentage = (value - min) / (max - min)
但是,由于传感器的值是反向的,我如何修改公式以获得百分比?

考虑到:

  • :要转换的传感器读数
  • min
    :传感器返回的最小值
  • max
    :传感器返回的最大值
根据您提供的表达式,百分比可以计算为:

percentage = 1 - ((value - min) / (max - min))
如果做一些代数运算,可以将表达式简化为:

percentage = (max - value) / (max - min)
or
percentage = (value - max) / (min - max)    
这些百分比将在0和1之间变化,就像原始表达式一样。如果需要整数表示,只需将结果乘以100。

我算出来了

 P = ( ( ( value - 33 ) / ( 116 - 33 ) ) * 100 ) - 100)

然后我就把它从负数转换成正数

我不明白你的逻辑。你能解释一下为什么100变成33,0变成116吗?传感器测量距离,在传感器能测量的最远距离,我得到的读数是33v,这将是100%。另一方面,当传感器没有读取任何距离时,我得到116v,这将是0%。我投票结束这个问题,因为它与编程或软件开发无关。原始公式返回的值介于0和1之间。不确定为什么要编辑答案以返回0到100之间的值。这使得答案不一致。公式中的min是最小值(33)还是传感器上的最小读数(116)?此表达式与原始表达式几乎相同。唯一的区别是它返回一个介于0和100之间的值,而不是0和1。这里33将给你0,当你在最初的问题上说它应该返回100%是的,我忘记了最后一部分((value-33)/(116-33))*100)-100)比:
percentage=100*(max-value)/(max-min)
或在你的特殊情况下
100*(116-value)/(116-33)更做作
正如我在回答中所建议的那样。