C# 四舍五入中一處易錯點
,你沒看錯,四舍五入的結果 和我們期待的不太一樣
Why??
進入源碼看下,註釋中解釋的很清楚。。
默認情況下,Math.Round()方法返回的是最接近的整數,這個沒問題,問題是當要轉換的數據在 兩個整數之間時即 0.5時,這個方法默認會返回兩個整數中的偶數,並不是我們認為的0.5就進位
如果我們需要實現四舍五入 我們看它的幾個重載方法
其中
這個方法的參數MidpointRounding枚舉 參數給出了當數據是兩個整數之間的數值時,如果取整數
其中第二個,會舍入較小的那個整數,也就是取較大的值,這個正是我們所希望的,所以我們四舍五入時候 需要將這個參數加上,並且參數值設為 AwayFromZero
之前正沒有仔細註意過,以後要多註意一些常用方法的重載,以防止出現類似的問題
例如 如下一段代碼:
執行完轉換後 id 的值是多少?
如果稍微不註意很容易認為是100,其實是0.out 是只傳出 不管入的
C# 四舍五入中一處易錯點
相關推薦
C# 四舍五入中一處易錯點
它的 參數 需要 進位 註釋 info 出了 返回 .com ,你沒看錯,四舍五入的結果 和我們期待的不太一樣 Why?? 進入源碼看下,註釋中解釋的很清楚。。 默認情況下,Math.Round()方法返回的是最接近的整數,這個沒問題,問題是當要轉換的數
C++四舍五入問題
standard 聲明 器) 精度 有效 ios 處理 man 表示法 C++四舍五入問題: c++默認的流輸出數值有效位是6,包括整數和小數,若數值超出6位,則第七位四舍五入到6位數 #include <iomanip> 輸入輸出庫的一部分,聲明了一些與提取及
震驚!C++/C中輸出浮點數時的四舍五入竟可以被hack!
bsp cst www. family st2 print 控制 double 一份 假如我們遇到了這樣一道題: 【題目描述】 給你一個浮點數f,輸出它保留n位小數(四舍五入)後的結果。 【輸入格式】 輸入兩個數,分別為f和n。 【輸出格式】 一個數,即最終結果。 【
js Math [ 隨機數、絕對值、四舍五入、進一取整、舍去取整、最大值、最小值、圓周率 ]
pre 最大 abs 取整 dom tran 絕對值 rip math <script> /* 數學對象:Math */ with (document) { write(‘<br>-3.5的絕
【PHP】進一法取整、四舍五入取整、忽略小數等的取整數方法大全
方法大全 net 總結 默認 article echo 進制 oat () PHP取整數函數常用的四種方法,下面收集了四個函數;經常用到取整的函數,今天小小的總結一下!其實很簡單,就是幾個函數而已~~主要是:ceil,floor,round,intval
56.js中Math取整,四舍五入等
min 最大 ... min() 計算 取整 floor rand 返回 Math.abs() //Math.abs(x) x任意值 返回絕對值 Math.ceil()//Math.ceil(x) 向上取整,四舍五入 Math.cos()//余弦 Math.fl
C#.NET常見問題(FAQ)-浮點數如何四舍五入
沒有 .net ref .cn image 郵箱 下載 在線 微軟 使用Math.Round方法即可實現保留指定的小數點後面位數,這種方法返回的還是double類型,而ToString方法並沒有做實際轉換 ?更多教學視頻和資料下載,歡迎關註以下信息: 我的優
PYTHON3 中的虛假四舍五入:round()
back log 兩個 fff lock 12px mil 這不 -s PYTHON3 中的虛假四舍五入:round() 創建時間: 2017/12/5 17:08 作者: CN_Simo 標簽: python基礎, ro
頁面中使用fmt:formatNumber標簽保留n位小數四舍五入問題
inf 數值 AC ber pattern 小數位 min BE digi 在頁面中 對某一數值進行保留n位小數的操作JSTL的formatNumber 標簽進行數值的四舍五入時,發現它竟然使用的是"4舍6入5奇偶"的算法. 要實現"四舍五入"的算法,只需要在原有值的基礎上
MySQL中round()四舍五入之坑
函數 數值 的確 sql pan var double TE 計算 計算數值時,因將一個數值由代碼四舍五入改成SQL四舍五入做整數處理而產生了誤差。該字段為varchar類型,修改後的計算結果與之前的結果當小數位為.5四舍五入進位時,竟然出現誤差。例如2.5,當字段類型為v
float浮點數的四舍五入
4.5 align 轉換成整型 auth 是你 int upload 保險 ews 瑞生網http://www.rationmcu.com版權所有 前幾天,有個小夥伴在做實驗過程中,發現了一個奇怪的現象,這個現象就是… 他在用printf輸出浮點
php float函數四舍五入問題
oat round float 問題 floor函數 val 轉換 整形 3.1 不四舍五入只取整數floor函數 2.1 = 2 2.6 = 2 不四舍五入浮點進1ceil函數:2.1 = 3 2.6 = 3
DecimalFormat 四舍五入Float類型的坑
能夠 func print form art word int () num 今天又踩了一個坑,使用DecimalFormat來完畢四舍五入。可是傳入的是float類型,幾輪測試才發現一個問題,傳入的float會被轉為double類型。大家都知道floa
sql 四舍五入保留兩位小數
num ima decimal tro 四舍五入 cas ron 關於 str select cast(362315*1.0/10000 as numeric(18,2)) select convert(decimal(18, 2), 362315 *
Double類型的數據四舍五入保留小數點後兩位
max 1.5 ceil 小數點後兩位 format clas 返回值 rfi pre 4種方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat;
JavaSE8基礎 Math.round 簡單的四舍五入成整數
true win stat light 資源 .cn ges com alt os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) code: p
保留小數點後兩位,四舍五入與不四舍五入
tex head change body func onclick set console click <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"&
java保留小數點後四舍五入的問題
四舍五入 在Java中使用一些方法進行四舍五入會出現和預期不同的結果,這是因為這些方法使用的原則實際為:四舍六入五考慮,五後非零就進一,五後皆零看奇偶,五前為偶應舍去,五前為奇要進一。 1.四舍六入五考慮時出現五的情況double f=9.545d; System.out.prin
JS處理數據四舍五入,tofixed與round的區別
處理 fixed bsp 實現 保留 簡單 區別 這樣的 color 1 、tofixed方法 toFixed() 方法可把 Number 四舍五入為指定小數位數的數字。例如將數據Num保留2位小數,則表示為:toFixed(Num);但是其四舍五入的規則與數學中的規
Java - BigDecimal四舍五入註意事項
note mage src big edi com 註意事項 圖片 https 如上圖,精度後只有一位時,是五舍六入。 如上圖,精度後只有第一位不為0時,也是五舍六入。 如上圖,精度後至少有兩位不為0時,才是四舍五入。 Java - BigDecim