通过(int)方式进行取整,(int)是强转,强制把其他类型转换成整型。
创新互联建站是一家专注于成都网站建设、网站制作与策划设计,苍南网站建设哪家好?创新互联建站做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:苍南等地区。苍南做网站价格咨询:18980820575
语法:
int b =(int)浮点型变量;
例如:
double a = 1.22;
int b=(int)a;//强转double为整型。,取整,结果为1
(要学会百度啊)
Math类中提供的三个与取整有关的方法:
第一个: ceil
ceil的意思就是: 天花板的意思;该方法表示的是向上取整Math.ceil(11.3)的值是12 ; Math.ceil.(-11.6)的结果是-11;
第二个是: floor
首先他的英文含义就是地板的含义,该方法就表示的是向下取整,
Math.floor(11.6)的结果就是11 ;
Math.floor(-11.4);的结果就是-12
第三个是: round
他表示的是四舍五入,算法为 Math.floor(x+0.5);也就是在原来的数字上加上0.5之后再进行向下取整;
Math.round(11.5);也就是 Math.floor(11.5+0.5)= Math.floor(12)=12;
同理: Math.round(-11.5)= Math.floor(-11.5+0.5)=Math.floor(-11.0)= -11;
原文地址:网页链接
直接转换成整数,就可以完成取整,具体代码如下:
import java.util.Scanner;
public class App12 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float f = scanner.nextFloat();
// 取整数部分
int result = (int)f;
System.out.println(result);
}
}
原理很简单,在java中所有名文写在代码里的数字,都被编译器按照int类型处理,int类型变量之间进行四则运算结果还是int类型的
time / (1000 * 60 * 60 * 24 * 365)
这个语句中,括号内的乘法计算结果就是int类型的,但是这个乘积的结果超过了int的表示范围了
int 能表示的最大值 Integer.MAX_VALUE = 2147483647 (本人系统MacOS10.15, jdk1.8, 不同系统不同版本jdk下,这个值可能不同,但是相差不大)
而你表达式括号内的乘法结果是31536000000,已经远大于int的表示范围了,因此这个计算结果是越界的,错误的,所以最终得到的结果是错误的
把第一个计算数改成long类型的,计算结果就会是正确的了