官术网_书友最值得收藏!

2.3.1 取整函數

雖然Java提供了基礎的加減乘除符號,但是數學上還有其他運算符號,包括四舍五入用到的約等號“≈”、求絕對值的“| |”、開平方的“”,這些運算符形態各異,而且并非ASCII碼的基本字符,也就意味著它們無法原樣搬到Java來。為此,Java的設計師封裝了一套數學函數庫Math,把加減乘除以外的常見數學運算都納入在內,然后作為Math庫的函數方法提供給程序員調用。比如四舍五入變成了Math庫的round方法,取絕對值變成了Math庫的abs方法,Math庫另外提供了取整方法floor和ceil。其中,floor方法指的是將變量往下取整,也就是往數值小的方向取整;ceil方法指的是將變量往上取整,也就是往數值大的方向取整。

需要注意的是,如果變量值為負數(假設x=-9.9),那么對x做floor取整將得到-10,對x做ceil取整將得到-9,這種情況與常人理解的正數取整并不相同。假設變量值為正數(如x=9.9),則對x做floor向下取整將得到9,對x做ceil向上取整將得到10。負數的取整結果看似有悖常理,其實完全沒有毛病,因為floor方法取的是數值更小的整數,而ceil方法取的是數值更大的整數。既然-10<-9.9<-9,于是floor取整得到了數值更小的-10,而ceil取整得到了數值更大的-9。若想眼見為實,則可運行下面的測試代碼加以驗證(完整代碼見本章源碼的src\com\arithmetic\math\Trunc.java):

double decimalPositive=9.9;  //準備演示對正數四舍五入
long roundPositive=Math.round(decimalPositive);  //四舍五入
System.out.println("roundPositive=" + roundPositive);
double floorPositive=Math.floor(decimalPositive); //往下取整,也就是往數值小的方向取整
System.out.println("floorPositive=" + floorPositive);
double ceilPositive=Math.ceil(decimalPositive);  //往上取整,也就是往數值大的方向取整
System.out.println("ceilPositive=" + ceilPositive);
double decimalNegative=-9.9;  //準備演示對負數四舍五入
long roundNegative=Math.round(decimalNegative);  //四舍五入
System.out.println("roundNegative=" + roundNegative);
double floorNegative=Math.floor(decimalNegative); //往下取整,也就是往數值小的方向取整
System.out.println("floorNegative=" + floorNegative);
double ceilNegative=Math.ceil(decimalNegative);  //往上取整,也就是往數值大的方向取整
System.out.println("ceilNegative=" + ceilNegative);
double absoluteValue=Math.abs(decimalNegative);  //取絕對值
System.out.println("absoluteValue=" + absoluteValue);
主站蜘蛛池模板: 高尔夫| 庐江县| 新晃| 成安县| 卢湾区| 错那县| 阜城县| 正阳县| 安国市| 法库县| 东平县| 澄江县| 邹平县| 衡阳县| 顺昌县| 宁国市| 武强县| 玛曲县| 屏南县| 镇江市| 鄂伦春自治旗| 恩施市| 甘孜县| 无棣县| 芦山县| 得荣县| 张掖市| 黄平县| 海丰县| 凤城市| 桃园市| 同江市| 阳泉市| 三河市| 休宁县| 郸城县| 山阳县| 册亨县| 紫金县| 盱眙县| 夏邑县|