java 向上取整 java對小數取整

取整方法
Math.floor(double a) 向下取整
Math.ceil(double a) 向上取整
Math.round(double a) 四舍五入
+0.5向下取整
Math.rint(double a) 就近取整
1.6接近2,所以就取2
1.4接近1,所以就取1
1.5跟1和2都很接近,這時候就取偶數
(int) 類型強轉
直接截取小數

測試示例
測試示例代碼?

public static void main(String[] args) {double[] teArr = new double[]{1.4, 1.5, 1.6};for (double t1 : teArr) {System.out.println("==========================================================");System.out.println("測試數據:" + t1);// 向下取整System.out.println("向下取整 " + Math.floor(t1));// 向上取整System.out.println("向上取整 " + Math.ceil(t1));// 四舍五入或(+0.5向下取整)System.out.println("四舍五入 " + Math.round(t1));// 就近取整 如1.6接近2,所以就取2;1.4接近1,所以就取1;那么1.5呢,1.5跟1和2都很接近,這時候就取偶數System.out.println("就近取整 " + Math.rint(t1));// 類型強轉 直接截取小數System.out.println("類型強轉 " + (int) t1);}
}
-----------------------------------
java 小數取整 java對小數取整
https://blog.51cto.com/u_14112/6338010

?示例返回結果

==========================================================
測試數據:1.4
向下取整 1.0
向上取整 2.0
四舍五入 1
就近取整 1.0
類型強轉 1
==========================================================
測試數據:1.5
向下取整 1.0
向上取整 2.0
四舍五入 2
就近取整 2.0
類型強轉 1
==========================================================
測試數據:1.6
向下取整 1.0
向上取整 2.0
四舍五入 2
就近取整 2.0
類型強轉 1
-----------------------------------
java 小數取整 java對小數取整
https://blog.51cto.com/u_14112/6338010

?Java兩整數相除向上取整的方式詳解(Math.ceil())

在調外部接口獲取列表數據時,需要判斷是否已經取完了所有的值,因此需要用到向上取整

Java中兩個整數相除,如果不能整除,默認是向下取整的。例如:11 除以 3 的結果是 3。然而,某些情況下(eg. 把11個糖果,每3個分一堆,不足三個也分成一堆,可以分幾堆?),我們需要向上取整,這樣的情況該如果處理呢??

方式一: 添加三目運算符邏輯代碼?

	x / y + (x % y != 0 ? 1 : 0);

?這種方法邏輯上很簡單,如果x可以整除y,就將x / y 的結果加0,不能整除y就將x / y 的結果加1。

方式二:使用ceil函數?

(int)Math.ceil((double)x/y);
// 或者
(int)Math.ceil(x * 1.0 /y);

?首先,將被除數轉換成double類型,再將計算的結果通過Math.ceil()函數向上取整,這種方式是網上經常可以看到的方式。

方式三:其他邏輯?

(x + y - 1) / y

?

這種方式為什么可以達到向上取整的效果呢,為什么x要加y - 1?

為了方便理解,我們通過具體的計算來說明。

1.對于可以整除的情況

x = 9,y = 3

(x + (y - 1)) / y,x加上了一個比y小的數,最終(x + (y - 1)) / y = (x / y) ...y - 1

商為(x / y), 余數為(y - 1),余數相當于兩數相除結果都小數部分,會被舍去,最終(x + (y - 1)) / y` = (x / y)

2.對于不可以整除的情況

x = 11, y = 3

11 / 3 = 3 ... 2

x + (y - 1) = (3 * 3 + 2) + (3 - 1) = (3 * 3 + 2 - 1)+ 3= (3 * 3 + 3) + 2 - 1

x + (y - 1) / y = ((3 * 3 + 3) + 2 - 1 )/ 3 = 4

就是x不能整除y余數肯定在1到y - 1之間,從中取出1給y - 1,使得被除數增加了一個y,進而商會增加1,余數部分為0到y - 2是會被舍去的。

java向上取整函數Math.ceil()?

java向上取整函數Math.ceil()

百度Math.ceil()函數:“Math.ceil()是常見編程語言中的常用代碼,ceil() 方法執行的是向上取整計算,它返回的是大于或等于函數參數,并且與之最接近的整數。“

Math.ceil(param)使用實例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

double dividend = 7;??? // 被除數

double divisor = 2;???? // 除數

double flag = 0;???

int result1 = 0;

int result2 = 0;

// 函數式

flag = Math.ceil(dividend / divisor);?????? //向上取整計算

result1 = (int)flag;??????????? //將結果轉化為int數據類型

// 判斷式:整除法

if ((dividend % divisor) == 0) {

????result2 = (int)dividend / (int)divisor;?????????????? // 將操作數轉化為int型數據

} else {

????result2 = ((int)dividend / (int)divisor) + 1;???????? // 將操作數轉化為int型數據

}

Object[] options = { "成功", "取消" };

JOptionPane.showOptionDialog(null, "函數ceil求值=" + result1 + "; 判斷求值=" +result2,

????"Warning",JOptionPane.DEFAULT_OPTION,

????JOptionPane.WARNING_MESSAGE,null, options, options[0]);

結果為所要的:(函數式與整除判斷式等效)

注意:

兩個限制:判斷式,適用于整除;其操作數為int(Integer)數據類型,否則,得不到想要的效果。函數式,若使用int(Integer)作為操作數(參數),需要特別注意:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

double dividend = 7;??? // 被除數

double divisor = 2;???? // 除數

double flag = 0;???

int result1 = 0;

int result2 = 0;

// 函數式

// ① (int)dividend / (int)divisor 將計算結果直接轉換為int型,因此這里的結果為3

//(int 類型丟失精度,即小數點之后的數丟失,本例的 3.5 丟失了0.5;

// 這里涉及 高精度數 向 低精度數 轉化時,會丟失精度。

// 精度從低到高 int < double < float).

// ② Math.ceil(3)函數執行,向上取整,也是3

// 感謝 博友“ws458371436” 的糾正,之前這個地方是糊涂的,還好有博友的細心,避免再誤導其他朋友

flag = Math.ceil((int)dividend / (int)divisor); // 向上取整計算int = Math.ceil(int),對int整數取整,純屬多余!

result1 = (int)flag;??????? //將結果轉化為int數據類型

// 判斷式:整除法

if ((dividend % divisor) == 0) {

????result2 = dividend / divisor;??????????????????? // 保持double型數據類型

} else {

????result2 = (dividend / divisor) + 1;???????????? // 保持double型數據類型

}

Object[] options = { "成功", "取消" };

JOptionPane.showOptionDialog(null, "函數ceil求值=" + result1 + "; 判斷求值=" +result2,

????"Warning",JOptionPane.DEFAULT_OPTION,

????JOptionPane.WARNING_MESSAGE,null, options, options[0]);

測試結果:

總結:函數(接口),都具有它的適應范圍和限制條件,正是這些條件,標定了基本功能,有準確的指向,得出特定效果。這也是智能。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41601.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41601.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41601.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB:數據庫初步應用

一.連接MongoDB 1.MongoDBCompass連接數據庫 連接路徑:mongodb://用戶名:密碼localhost:27017/ 2.創建數據庫(集合) MongoDB中數據庫被稱為集合. MongoDBCompass連接后,點擊紅色框加號創建集合,點擊藍色框加號創建文檔(數據表) 文檔中的數據結構(相當于表中的列)設計不用管…

騰訊云國際輕量應用服務器使用流程是什么呢?

騰訊云國際輕量應用服務器怎么使用呢&#xff1f;下面一起來了解一下&#xff1a; 1. 熟悉輕量應用服務器基礎知識 ①什么是輕量應用服務器 TencentCloud Lighthouse&#xff1f; ②輕量應用服務器與云服務器 CVM 的區別是什么&#xff1f; ③為什么選擇輕量應用服務器&#xf…

一個DW的計算

一個DW的計算 1- 題目: 已知一個DW1.1 要求: 從DW中取出指定的位的值1.1.1 分析1.1.2 實現1.1.3 簡化實現1.1.4 驗證 2- 題目: 已知一個DW2.1 要求: 從DW中的指定的P和S,取出指定的位的值2.1.1 分析2.1.2 實現 1- 題目: 已知一個DW 有圖中所示一行信息&#xff0c;表示一個DW(…

常見的Web安全漏洞有哪些,Web安全漏洞常用測試方法介紹

Web安全漏洞是指在Web應用程序中存在的可能被攻擊者利用的漏洞&#xff0c;正確認識和了解這些漏洞對于Web應用程序的開發和測試至關重要。 一、常見的Web安全漏洞類型&#xff1a; 1、跨站腳本攻擊(Cross-Site Scripting&#xff0c;XSS)&#xff1a;攻擊者通過向Web頁面注入…

神經網絡基礎-神經網絡補充概念-41-梯度的數值逼近

概念 梯度的數值逼近是一種用于驗證梯度計算正確性的方法&#xff0c;它通過近似計算梯度來與解析計算的梯度進行比較。雖然數值逼近在實際訓練中不常用&#xff0c;但它可以用來檢查手動或自動求導的實現是否正確。 代碼實現 import numpy as np# 定義函數 f(x) x^2 def f…

養生的年輕人,自己給自己“治病”

【潮汐商業評論/原創】 “最近嘴周總長痘&#xff0c;應該是上火了&#xff0c;我這就下單點金銀花露喝。”對于長痘這件事&#xff0c;Anna的第一反應就是“內調”。 “針對性護膚和涂藥這些方法治標不治本&#xff0c;就算用完痘痘不泛紅且癟了&#xff0c;身體里的問題沒解…

上傳文件報413Request EntityToo Large錯誤解決辦法

產生這種原因是因為服務器限制了上傳大小 1、nginx服務器的解決辦法 修改nginx.conf的值就可以解決了 將以下代碼粘貼到nginx.conf內 client_max_body_size 20M 可以選擇在http{ }中設置&#xff1a;client_max_body_size 20m; 也可以選擇在server{ }中設置&#xff1a;cli…

金蝶軟件實現Excel數據復制分錄信息粘貼到單據體分錄行中

>>>適合KIS云專業版V16.0|KIS云旗艦版V7.0|K/3 WISE 14.0等版本<<< 實現Excel數據復制分錄信息粘貼到金蝶單據體分錄中,在采購訂單|采購入庫單|銷售訂單|銷售出庫單等類型單據中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地復制到金蝶單據表體…

java+springboot+mysql銀行管理系統

項目介紹&#xff1a; 使用javaspringbootmysql開發的銀行管理系統&#xff0c;系統包含超級管理員、管理員、客戶角色&#xff0c;功能如下&#xff1a; 超級管理員&#xff1a;管理員管理&#xff1b;客戶管理&#xff1b;卡號管理&#xff08;存款、取款、轉賬&#xff09…

Vue 2混入

混入&#xff08;Mixins&#xff09;是一種在Vue組件中重用代碼的方式。它允許你定義一些可復用的選項對象&#xff0c;然后將這些選項合并到不同的組件中。混入可以用于在多個組件之間共享邏輯、方法、生命周期鉤子等。 示例&#xff1a; <!DOCTYPE html> <html>…

.net core介紹

.NET Core&#xff08;現在已經重命名為.NET 5及更高版本為.NET&#xff09;是一個跨平臺的開源開發框架&#xff0c;由Microsoft開發和維護。它旨在支持構建現代、高性能、可擴展的應用程序&#xff0c;可以運行在Windows、macOS和Linux等多個操作系統上。 以下是.NET Core的…

記一次微信小游戲滲透測試

本文轉載于&#xff1a;https://www.freebuf.com/vuls/371936.html 準備工作 因為目標站點只能用微信打開&#xff0c;微信又不能調試看代碼。這里推薦可以使用pc端舊版微信3.2.1&#xff0c;具體方法放鏈接里&#xff1a; https://blog.csdn.net/qq_45863248/article/details/…

Springboot 封裝整活 Mybatis 動態查詢條件SQL自動組裝拼接

前言 ps&#xff1a;最近在參與3100保衛戰&#xff0c;戰況很激烈&#xff0c;剛剛打完仗&#xff0c;來更新一下之前寫了一半的博客。 該篇針對日常寫查詢的時候&#xff0c;那些動態條件sql 做個簡單的封裝&#xff0c;自動生成&#xff08;拋磚引玉&#xff0c;搞個小玩具&a…

chatgpt多個key循環使用解決token限速

itertools.cycle 是 Python 標準庫中的一個函數&#xff0c;它用于創建一個無限循環迭代器。它接受一個可迭代對象作為參數&#xff0c;并會不斷重復該可迭代對象的元素。 使用 itertools.cycle 可以方便地創建一個可以無限循環的迭代器。當你需要反復訪問一個可迭代對象的元素…

【Linux操作系統】深入探索Linux進程:創建、共享與管理

進程的創建是Linux系統編程中的重要概念之一。在本節中&#xff0c;我們將介紹進程的創建、獲取進程ID和父進程ID、進程共享、exec函數族、wait和waitpid等相關內容。 文章目錄 1. 進程的創建1.1 函數原型和返回值1.2 函數示例 2. 獲取進程ID和父進程ID2.1 函數原型和返回值2.…

接口測試及接口抓包常用測試工具和方法?

作為測試領域中不可或缺的一環&#xff0c;接口測試和抓包技術在軟件開發過程中扮演著至關重要的角色。不論你是新手還是有一些經驗的小伙伴&#xff0c;本篇文章都會為你詳細介紹接口測試的基本概念、常用測試工具和實際操作技巧&#xff0c;讓你輕松掌握這一技能。 接口測試…

Java數字化智慧工地管理云平臺源碼(人工智能、物聯網、大數據)

智慧工地優勢&#xff1a;"智慧工地”將施工企業現場視頻管理、建筑起重機械安全監控、現場從業人員管理、物料管理、進度管理、揚塵噪聲監測等現場設備有機、高效、科學、規范的結合起來真正實現工程項目業務流與現場各類監控源數據流的有效結合與深度配合&#xff0c;實…

在Hive/Spark上運行執行TPC-DS基準測試 (ORC和TEXT格式)

目前,在Hive/Spark上運行TPC-DS Benchmark主要是通過早期由Hortonworks維護的一個項目:hive-testbench 來完成的。本文我們以該項目為基礎介紹一下具體的操作步驟。不過,該項目僅支持生成ORC和TEXT格式的數據,如果需要Parquet格式,請參考此文《在Hive/Spark上執行TPC-DS基…

動態代理有幾種方式,可以借助Mybatis-plus里面的檢驗動態類

動態代理有很多的分類&#xff1b; 1、JDK原生的動態代理&#xff1b; 2、Spring實現的基于cglib里面的工廠實例化對象&#xff1b; 3、基于原生的cglib造出來的對象 4、基于字節碼的反編譯&#xff1a;assistant 具體的實現類參考&#xff1a; public final class ClassU…

【JVM】對String::intern()方法深入詳解(JDK7及以上)

文章目錄 1、什么是intern&#xff1f;2、經典例題解釋例1例2例3 1、什么是intern&#xff1f; String::intern()是一個本地方法&#xff0c;它的作用是如果字符串常量池中已經包含一個等于此String對象的字符串&#xff0c;則返回代表池中這個字符串的String對象的引用&#…