【发布时间】:2021-10-11 21:21:24
【问题描述】:
我有以下号码:14.2423421。这个数字是一个浮点数。我想将其转换为 142423421。所以,我想要相同的数字,但没有意义。它必须是一个整数。显然它不能是字符串类型。怎么做?谢谢大家!
【问题讨论】:
-
你不只有这个号码,是吗?您希望如何转换 1.1?
-
如果
x是用float x = 14.242342f;定义的float,您希望将x转换为什么整数值?请记住,在大多数系统上,14.2423421f和14.242342f将具有 same 值。倒退一步,或许你能解释一下这是干什么用的?可能有更好的方法来解决根本问题,不管它是什么。 -
如果您将数字视为字符串,“删除点”的概念似乎简单直观。但是,当您将数字...视为数字时,该概念毫无意义。你可以做什么样的数学运算来以你描述的方式“删除一个点”?更糟糕的是,由于浮点表示和随之而来的不精确性——“直观”的结果通常无法实现。也许您应该将数字直接表示为字符串。
-
这个问题使用了有缺陷的浮点模型。在
float最常用的格式中,14.2423421 是不可表示的。最接近的可表示值是 14.2423419952392578125。所以程序没有数字 14.2423421,float中没有信息可以告诉我们输入 14.2423419952392578125 应该产生 142423421 而不是 142423419952392578125。 -
所以 1.1 -> 11,对吗? 1.10呢?应该是 110 还是 11?我怀疑你的号码一开始就不应该存储为浮点数。
标签: c types floating-point type-conversion integer