通過(guò)(int)方式進(jìn)行取整,(int)是強(qiáng)轉(zhuǎn),強(qiáng)制把其他類(lèi)型轉(zhuǎn)換成整型。
創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),蒼南網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:蒼南等地區(qū)。蒼南做網(wǎng)站價(jià)格咨詢(xún):18980820575
語(yǔ)法:
int b =(int)浮點(diǎn)型變量;
例如:
double?a?=?1.22;
int?b=(int)a;//強(qiáng)轉(zhuǎn)double為整型。,取整,結(jié)果為1
(要學(xué)會(huì)百度啊)
Math類(lèi)中提供的三個(gè)與取整有關(guān)的方法:
第一個(gè): ceil
ceil的意思就是: 天花板的意思;該方法表示的是向上取整Math.ceil(11.3)的值是12 ; Math.ceil.(-11.6)的結(jié)果是-11;
第二個(gè)是: floor
首先他的英文含義就是地板的含義,該方法就表示的是向下取整,?
Math.floor(11.6)的結(jié)果就是11 ;?
Math.floor(-11.4);的結(jié)果就是-12
第三個(gè)是: round
他表示的是四舍五入,算法為 Math.floor(x+0.5);也就是在原來(lái)的數(shù)字上加上0.5之后再進(jìn)行向下取整;?
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;
原文地址:網(wǎng)頁(yè)鏈接
直接轉(zhuǎn)換成整數(shù),就可以完成取整,具體代碼如下:
import?java.util.Scanner;
public?class?App12?{
public?static?void?main(String[]?args)?{
Scanner?scanner?=?new?Scanner(System.in);
float?f?=?scanner.nextFloat();
//?取整數(shù)部分
int?result?=?(int)f;
System.out.println(result);
}
}
原理很簡(jiǎn)單,在java中所有名文寫(xiě)在代碼里的數(shù)字,都被編譯器按照int類(lèi)型處理,int類(lèi)型變量之間進(jìn)行四則運(yùn)算結(jié)果還是int類(lèi)型的
time / (1000 * 60 * 60 * 24 * 365)
這個(gè)語(yǔ)句中,括號(hào)內(nèi)的乘法計(jì)算結(jié)果就是int類(lèi)型的,但是這個(gè)乘積的結(jié)果超過(guò)了int的表示范圍了
int 能表示的最大值 Integer.MAX_VALUE =?2147483647 (本人系統(tǒng)MacOS10.15, jdk1.8, 不同系統(tǒng)不同版本jdk下,這個(gè)值可能不同,但是相差不大)
而你表達(dá)式括號(hào)內(nèi)的乘法結(jié)果是31536000000,已經(jīng)遠(yuǎn)大于int的表示范圍了,因此這個(gè)計(jì)算結(jié)果是越界的,錯(cuò)誤的,所以最終得到的結(jié)果是錯(cuò)誤的
把第一個(gè)計(jì)算數(shù)改成long類(lèi)型的,計(jì)算結(jié)果就會(huì)是正確的了