将表示位置的整数分解为多个部分然后再返回

时间:2017-05-24 19:45:30

标签: c++ math

我正在使用一些代表电机绝对位置的硬件,使用无符号整数。规格告诉我一个数字代表100nm。

然后< =>值为100,000。 10mm,100,000×100 = 100,000,000nm = 10。 10毫米。

为了使用户能够很好地控制电动机,使用如此大的数字是不实际的。所以我使用mm,um和nm部分来表示数字。我可以把那些作为

//Input number x 100 -> value in nm
unsigned int nmVal = input * 100;
unsigned int mmValue = (nmVal / 10000000 % 10) * 10  + (nmVal / 1000000 % 10);
unsigned int umValue = (nmVal / 100000 % 10) * 100 + (nmVal / 10000 % 10) * 10 + 
(nmVal / 1000 % 10);
unsigned int nm = (nmVal / 100 % 10) * 100;

我可以在三个编辑框中将这些内容呈现为mmValue + umValue + nmValue。

然后,用户可以轻松修改nm部分,而无需担心其他部分。

问题是,如何从另一个方向走向表示位置的整数,来自'部分',没有使用双??

如果我只是添加数字,即

int position = mmVal * 1e-3 + umVal*1e-6 + nmVal*1e-9

变量位置将为零。

1 个答案:

答案 0 :(得分:1)

反过来说:

position_t nmPos = mmVal * 1e6 + umVal * 1e3 + nmVal;