Java 截断为整数…和if语句,以确定它是否不是整数

Java 截断为整数…和if语句,以确定它是否不是整数,java,if-statement,decimal,truncate,Java,If Statement,Decimal,Truncate,我们的教授不久前给了我们这个伪代码…这部分我很难理解 伪码 数组索引值为14,包含14个字符串名 外壳分拣(Arr,N) { 如果(N=1),则 { 出口 } 将间隔设置为N while(间隔不是1) { 将间隔设置为((间隔/3)+1) 如果(间隔不是整数),则尝试十进制格式 DecimalFormat df = new DecimalFormat("0.##"); String result = df.format(4.6666666666667); 试试十进制 DecimalFormat

我们的教授不久前给了我们这个伪代码…这部分我很难理解

伪码

数组索引值为14,包含14个字符串名

外壳分拣(Arr,N)

{ 如果(N=1),则

{

出口

}

将间隔设置为N

while(间隔不是1)

{

将间隔设置为((间隔/3)+1) 如果(间隔不是整数),则尝试十进制格式

DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(4.6666666666667);
试试十进制

DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(4.6666666666667);

我想你的教授的意思是数学地板(间隔)

我想你的教授的意思是数学地板(间隔)

检查整数

if(Math.floor(interval) == interval)
{
    //interval is a whole number
}
总结如下:

import java.math.RoundingMode;
import java.text.DecimalFormat;

public class Main
{
  final public static void main(String[] args)
  {
    double i = 4.6666666666667;
    DecimalFormat format = new DecimalFormat("#.#"); 
    format.setRoundingMode(RoundingMode.FLOOR); // *
    String s = format.format(i);
    i = Double.parseDouble(s);
    System.out.println(i); //should be 4.6
  }
}
*不要使用RoundingMode.FLOOR,而是使用适合您需要的合适的地板

如果要使其成为整数(整数)


检查整数

if(Math.floor(interval) == interval)
{
    //interval is a whole number
}
总结如下:

import java.math.RoundingMode;
import java.text.DecimalFormat;

public class Main
{
  final public static void main(String[] args)
  {
    double i = 4.6666666666667;
    DecimalFormat format = new DecimalFormat("#.#"); 
    format.setRoundingMode(RoundingMode.FLOOR); // *
    String s = format.format(i);
    i = Double.parseDouble(s);
    System.out.println(i); //should be 4.6
  }
}
*不要使用RoundingMode.FLOOR,而是使用适合您需要的合适的地板

如果要使其成为整数(整数)

使用

使用


如果你知道你正在处理一个数字,你可以:

if(x == (int)x) {
    //x is an int (ie: a whole number)
}
否则,如果您的数字是字符串,则可以使用try/catch语句,在该语句中对字符串执行
Integer.parseInt()
。如果parseInt()成功,则您处理的是int。否则,您可以捕获NumberFormatException。在这种情况下,转换不成功,您没有处理int


您需要查看
Math.floor()
来执行截断操作。

如果您知道要处理的是一个数字,则可以执行以下操作:

if(x == (int)x) {
    //x is an int (ie: a whole number)
}
否则,如果您的数字是字符串,则可以使用try/catch语句,在该语句中对字符串执行
Integer.parseInt()
。如果parseInt()成功,则您处理的是int。否则,您可以捕获NumberFormatException。在这种情况下,转换不成功,您没有处理int


你需要看一下
Math.floor()
来做截断。

看起来这就是你需要的:看起来这就是你需要的:还没有教我们…Math.floor(interval)做什么?它四舍五入还没有教我们…Math.floor(interval)做什么我已经编辑了我的答案,以便在上面的问题中包含代码。签出!好的..然后..在这里聊天,但确保在我们完成后删除所有聊天!先生…您检查了我刚才编辑的伪代码了吗?没有,先生,您需要添加以下两个导入语句:import java.math.RoundingMode;import java.text.DecimalFormat;仍然是错误…“无法解析符号类RoundingMode”和“无法解析符号变量RoundingMode”我已经编辑了我的答案,以便在上面的问题中包含代码。签出!好的..然后..在这里聊天,但确保在我们完成后删除所有聊天!先生…您检查了我刚才编辑的伪代码了吗?在最上面的问题中,没有先生,您需要添加以下两个导入语句:import java.math.RoundingMode;import java.text.DecimalFormat、 仍然是错误…“无法解析符号类RoundingMode”和“无法解析符号变量RoundingMode”