相关疑难解决方法(0)

如何在不进行转换的情况下将double转换为long?

没有强制转换,将double转换为long的最佳方法是什么?

例如:

double d = 394.000;
long l = (new Double(d)).longValue();
System.out.println("double=" + d + ", long=" + l);
Run Code Online (Sandbox Code Playgroud)

java type-conversion

183
推荐指数
8
解决办法
32万
查看次数

如何测试double是否为整数

是否有可能做到这一点?

double variable;
variable = 5;
/* the below should return true, since 5 is an int. 
if variable were to equal 5.7, then it would return false. */
if(variable == int) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我知道代码可能不会去这样的事情,但怎么去了?

java math

146
推荐指数
7
解决办法
11万
查看次数

所有整数值都完美地表示为双精度数吗?

我的问题是,是否保证所有整数值都具有完美的双重表示.

请考虑以下打印"相同"的代码示例:

// Example program
#include <iostream>
#include <string>

int main()
{
  int a = 3;
  int b = 4;
  double d_a(a);
  double d_b(b);

  double int_sum = a + b;
  double d_sum = d_a + d_b;

  if (double(int_sum) == d_sum)
  {
      std::cout << "Same" << std::endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

对于任何架构,任何编译器,任何值ab?保证这是真的吗?i转换为的任何整数是否double总是表示为i.0000000000000和不表示为,例如,i.000000000001

我尝试了其他一些数字并且它总是如此,但无法找到关于这是巧合还是设计的任何信息.

注意:这与这个问题(除了语言)不同,因为我添加了两个整数.

c++ precision double standards ieee-754

57
推荐指数
3
解决办法
8693
查看次数

如何准确判断double是否为整数?

特别是在Java中,如何确定a double是否为整数?为了澄清,我想知道如何确定double实际上不包含任何分数或小数.

我主要关注的是浮点数的性质.我想到的方法(以及我通过Google找到的方法)基本遵循以下格式:

double d = 1.0;
if((int)d == d) {
    //do stuff
}
else {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我当然不是浮点数和它们的行为方面的专家,但我的印象是因为double商店只有数字的近似值,if()条件只会进入某些时间(甚至大部分时间) ).但我正在寻找一种方法,无论double价值如何存储在系统中,都能保证100%的时间都能正常工作.

这可能吗?如果是这样,怎么样和为什么?

java floating-point

3
推荐指数
1
解决办法
2万
查看次数