好吧,这根本不是一个优化问题。
我正在编写一个(目前)简单的 Linux 内核模块,我需要在其中找到一些位置的平均值。这些位置存储为浮点(即float
)变量。(我是整件事的作者,所以我可以改变这一点,但我宁愿保持浮动的精确性,如果可以避免的话,不要参与其中)。
现在,这些位置值存储(或至少习惯于)在内核中只是为了存储。一个用户应用程序写入这些数据(通过共享内存(我使用的是 RTAI,所以是的,我在内核空间和用户空间之间有共享内存)),而其他应用程序则从中读取数据。我假设从浮点变量读取和写入不会使用 FPU,所以这是安全的。
安全,我的意思是避免在内核中使用 FPU,更不用说某些系统甚至可能没有 FPU。我不会使用kernel_fpu_begin/end,因为这可能会破坏我的任务的实时性。
现在在我的内核模块中,我真的不需要太多的精度(因为无论如何位置都是平均的),但我需要它达到 0.001。我的问题是,如何在不使用 FPU 的情况下将浮点数转换为整数(原始数字的 1000 倍)?
我考虑过手动从浮点数的位模式中提取数字,但我不确定这是否是个好主意,因为我不确定字节序如何影响它,或者即使所有架构中的浮点都是标准的。