在VB中運(yùn)用模運(yùn)算(mod)進(jìn)行求余數(shù)。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、沈丘網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為沈丘等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
對(duì)于整型數(shù)a,b來說,取模運(yùn)算或者求余運(yùn)算的方法都是:
1、求 整數(shù)商: c = a/b;
2、計(jì)算?;蛘哂鄶?shù): r = a - c*b。
求模運(yùn)算和求余運(yùn)算在第一步不同: 取余運(yùn)算在取c的值時(shí),向0 方向舍入;而取模運(yùn)算在計(jì)算c的值時(shí),向負(fù)無窮方向舍入。所謂向0方向舍入,就是以小數(shù)點(diǎn)為界限,直接將小數(shù)部分去掉。如(Int)-1.324=-1(亦叫截?cái)喾ǎ?/p>
而向負(fù)無窮方向舍入,就是最終結(jié)果比真實(shí)值更小。如(Int)-1.324=-2;(int此處是強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型)注意c是指商。
擴(kuò)展資料
通常情況下取模運(yùn)算(mod)和求余(rem)運(yùn)算被混為一談,因?yàn)樵诖蠖鄶?shù)的編程語言里,都用’%’符號(hào)表示取?;蛘咔笥噙\(yùn)算。在這里要提醒大家要十分注意當(dāng)前環(huán)境下’%’運(yùn)算符的具體意義,因?yàn)樵谟胸?fù)數(shù)存在的情況下,兩者的結(jié)果是不一樣的。
求模運(yùn)算和求余運(yùn)算在第一步不同: 取模求余運(yùn)算在取c的值時(shí),向0 方向舍入(fix()函數(shù));注:fix()函數(shù)是MATLAB中的一種取整函數(shù)、截?cái)嗪瘮?shù),直接截取數(shù)字的整數(shù)部分。而求余取模運(yùn)算在計(jì)算c的值時(shí),向無窮小方向舍入(floor()函數(shù))。
注:floor()函數(shù)為向下取整的函數(shù)。
代碼分析:
Math.Floor:返回小于或等于指定數(shù)字的最大整數(shù)。
Fix:返回?cái)?shù)字的整數(shù)部分。
Math.Floor?和?Fix?函數(shù)都移除?Number?的小數(shù)部分并返回得到的整數(shù)值。
Math.Floor?和?Fix?函數(shù)之間的區(qū)別在于:如果?Number?為負(fù),則?Math.Floor?返回小于或等于?Number?的第一個(gè)負(fù)整數(shù),而?Fix?返回大于或等于?Number?的第一個(gè)負(fù)整數(shù)。例如,Math.Floor?將?-8.4?轉(zhuǎn)換成?-9,而?Fix?將?-8.4?轉(zhuǎn)換成?-8。
你的要求:如果你的要求是直接舍去,那么應(yīng)當(dāng)采用Fix方法,考慮到時(shí)負(fù)數(shù)的情況,那么采用Math.Floor將會(huì)出現(xiàn)非預(yù)期的結(jié)果。
測(cè)試結(jié)果:見附圖。
歡迎交流。
使用Math.Round(),注意返回值可能為Double或Decimal。
如果取整,第二個(gè)參數(shù)不填或者填0
默認(rèn)采用 四舍六入五成雙,如果想四舍五入,請(qǐng)采用MidpointRounding.AwayFromZero作為第三個(gè)參數(shù)
Dim?數(shù)字?As?Double?=?2.45
Dim?r1?As?Double?=?Math.Round(數(shù)字,?1,?MidpointRounding.ToEven)?'??r1?=?2.4?四舍六入五成雙
Dim?r2?As?Double?=?Math.Round(數(shù)字,?1,?MidpointRounding.AwayFromZero)?'?r2?=?2.5?四舍五入