我有一个计算器应用程序。
如何实现以下目标?
如果小数点后面有非零数字,那么它应保持为双倍。
如果小数点后面没有非零数字,则应将其转换为等于double的整数。
例如,10.0003应显示为10.0003。 10.0应显示为10.
目前我将所有结果显示为Double(10.0)。如何检查小数点后是否有非零数字?我们有一个简单的解决方案吗?
答案 0 :(得分:1)
floating point
数字未在机器中完全和准确表示。它们不是固定点。因此10.0
可能实际上是9.99999988451
或类似的东西。或者,10.0003实际上可能是10.0000228993
- 因此编写满足此要求的逻辑非常困难。
请阅读What every computer scientist must know about floating point numbers
答案 1 :(得分:0)
x is a double
y = round(x)
if (x - y == 0)
{
// x has no non-zero decimal
}
else
{
// x has non-zero decimal
}