【发布时间】:2021-11-17 08:05:40
【问题描述】:
例如:
如果我有一个号码另存为
float f = 1.23005979e-41;
我想得到它的组成部分,比如
1 和 23005979
【问题讨论】:
-
用
sprintf转换成字符串,然后解析得到的字符串,可能使用strtol。 3-4行代码。 -
您需要更具体地说明“数字的整数”的含义,因为数字可能不是很精确。它们可能会被截断。在这个例子中,整数
1和23005979部分与浮点数关系不大。没有指数,这些数字毫无意义。 -
您的问题的答案是“您不知道”。一旦分配到
f,您就会丢失一些原始数字。我意识到您非常聪明地选择了一个实际上可以存储为float的次正规数,并且仍然保留了小数点后正确的 8 位数字。但这一般不会发生。 -
您实际上想要达到什么目的?这看起来像 XY Problem
-
像这样获取浮点数的“整数部分”几乎从来都不是一件合适的事情。解释这样做的目的是什么,以便人们可以让你走上正轨。