我正在使用一些无符号整数表示硬件的绝对位置的硬件。规格告诉我,一位代表100nm。
那么100,000的值 10mm,因为100,000 x 100 == 10,000,000 nm 10mm。
对于用户来说,要对电动机进行精细控制,以如此大的数量工作是不现实的。所以我用毫米,微米和纳米的部分来表示数字。我可以得到那些
//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呈现在UI中。
然后,用户可以轻松修改nm部分,而不必担心其他部分。
问题是,如何在不使用双精度的情况下,从“部分”到表示位置的整数?
如果我只加数字,即
int position = mmVal * 1e-3 + umVal*1e-6 + nmVal*1e-9
可变位置将为零。
最佳答案
那是另一种方式:position_t nmPos = mmVal * 1e6 + umVal * 1e3 + nmVal;
关于c++ - 将代表位置的整数分解为多个部分,然后再次返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44167237/