截断整数...以及判断它是否不是整数的语句

时间:2013-03-05 10:48:41

标签: java if-statement decimal truncate

我们的教授。不久之前给了我们这个伪代码......而且我很难用这个部分

伪代码

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

Shell_Sort(ARR,N)

{      如果(N = 1)那么

{

退出

}

将间隔设置为N

while(Interval不是1)

{

将间隔设置为((间隔/ 3)+1) 如果(Interval不是一个整数)那么< ---------这里是我遇到问题的部分

{

截断间隔< ------------并且在这里如何将间隔截断为整数?

}

将开始设为1

while(start< = Interval)

{

排序()

增量开始

}

}

}

排序()

{

将Unsrt_Indx设置为(start + interval)

while(unsrt_Indx< = N)

{

if(Arr [Unsrt_Indx - Interval]> arr [unsrt_Indx] then

{

将str_indx设置为unsrt_indx

将temp设置为arr [srt_indx]

while((str_indx> start&&(arr [str_indx-Interval]> temp))

{

将arr [set_indx]设置为arr [str_index-interval]

将str_indx设置为(crt_index - interval)

}

将arr [str_indx]设置为temp

}

将unsrt_indx设置为(unsrt_indx + interval)

}

}

如何判断if语句是否不是整数?

我如何使用截断? 将其截断为两三分之一。

ex.
4.6666666666667
how can i truncate it into
4.67
4.6
4

类似的东西。

5 个答案:

答案 0 :(得分:1)

如果你知道你正在处理一个号码,你可以这样做:

if(x == (int)x) {
    //x is an int (ie: a whole number)
}

否则,如果您的数字是String,则可以使用try / catch语句在其中对String执行Integer.parseInt()。如果parseInt()成功,那么你正在处理一个int。否则,您可以捕获NumberFormatException。在这种情况下,转换不成功,你没有处理int。

您需要查看Math.floor()进行截断。

答案 1 :(得分:0)

尝试使用DecimalFormat。

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

答案 2 :(得分:0)

我认为你的教授意味着Math.floor(interval)

答案 3 :(得分:0)

检查整数

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使用适合您需要的RoundingMode

如果你想把它变成一个整数(整数)

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

public class Main
{
  final public static void main(String[] args)
  {
    double i = 4.6666667;
    DecimalFormat format = new DecimalFormat("#"); 
    format.setRoundingMode(RoundingMode.FLOOR); // *
    String s = format.format(i);
    int j = Integer.parseInt(s);;
    System.out.println(j);// should be 4
  }
}

答案 4 :(得分:0)

使用

java.lang.Math.round(double);
相关问题