【发布时间】:2018-02-23 23:50:05
【问题描述】:
我正在尝试获取数字小数部分的值。但是,我需要将数字作为整数。
float x = 12.345; // eventually not hard-coded
int whole = (int)x;
int frac = (x - (float)whole); // this gives 0.345 - expected
x 可以是/有任何长度的小数位。我需要(在我的示例中)345 存储在frac
我在想我应该将值存储为字符串/char[],然后操作这些值...
问:如何获取存储为 int 的小数的小数值?
【问题讨论】:
-
12.1和12.001的结果应该是什么。他们应该都是1吗? -
对于固定的 3 位小数:乘以 1000 并使用
%。 -
请注意,由于浮点的性质,对于
float x = 0.3,您可能会得到 299。 -
...乘以 1000,
round到最接近的int,并使用% -
要获得小数部分,您可能需要查看
modf()系列函数。在不知道有效位数的情况下获得“任意长度的小数位”对我来说没有意义(正如@Barmar 的问题所暗示的那样)。能解释清楚点吗?
标签: c floating-point int