• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    關于MSSql數(shù)據(jù)庫除法運算結(jié)果的改進建議

    2020-07-03 02:49:22曹殿濤
    科學與信息化 2020年13期
    關鍵詞:改進運算建議

    摘 要 本文分析了MSSql數(shù)據(jù)庫除法運算結(jié)果,指出MSSql數(shù)據(jù)庫一個整數(shù)除以另一個整數(shù),結(jié)果只保留整數(shù),小數(shù)部分被舍去,不是通常意義上的除法,概念表達與實際結(jié)果名實不符,并就此提出了改進建議。

    關鍵詞 MSSql數(shù)據(jù)庫;除法;運算;結(jié)果;改進;建議

    1問題的提出

    2/4等于幾?3/2等于幾?這是個小學算術問題,答案很簡單, 2/4=0.5, 3/2=1.5,但是,在MSSql數(shù)據(jù)庫,你會感到很奇怪!2/4=0,3/2=1,這是為什么?

    首先看一個示例,圖1,在MSSql數(shù)據(jù)庫:

    (腳本在MSSql2000,2005,2012調(diào)試通過)

    是不是感到奇怪,運算結(jié)果怎么沒有小數(shù)呢?.5去哪里了?

    2問題的解釋

    通過查閱MSSql數(shù)據(jù)庫聯(lián)機幫助我們可知, MSSql算術運算符除法之結(jié)果返回優(yōu)先級較高的參數(shù)的數(shù)據(jù)類型,如果用一個整數(shù)除以另一個整數(shù),其結(jié)果是一個整數(shù),小數(shù)部分被截斷,也就是說,在MSSql數(shù)據(jù)庫, 一個整數(shù)除以另一個整數(shù),其結(jié)果是小數(shù)部分被舍去,只要整數(shù)結(jié)果,所以,在MSSql數(shù)據(jù)庫平臺,2/3=0,3/2=1[1]。但不是兩個整數(shù)相除呢?我們看一個示例,如圖2:

    (腳本在MSSql2000,2005,2012調(diào)試通過)

    因為float優(yōu)先級高于INT,那么,除法結(jié)果就返回float,小數(shù)部分沒有被截斷,能看到大家所熟悉的除法運算結(jié)果。

    由上所述可知,在MSSql數(shù)據(jù)庫,一個整數(shù)除以另一個整數(shù),其結(jié)果是一個整數(shù),小數(shù)部分被舍去,和通常的除法不一樣,但MSSql數(shù)據(jù)庫的整數(shù)與其它非整形數(shù)(如float)進行除或被除運算,運算結(jié)果保留小數(shù),和通常的除法一樣。

    在MSSql數(shù)據(jù)庫,怎樣實現(xiàn)兩個整數(shù)相除返回結(jié)果為大家所熟悉的計算結(jié)果——帶小數(shù)的結(jié)果呢?

    我們看一個示例:圖3

    這個方法是通過CAST函數(shù)將位于分子(分母)的整形數(shù)強行變換為float,從而實現(xiàn)了除法結(jié)果保留小數(shù)。

    我們再看一個示例,如圖4:

    (腳本在MSSql2000,2005,2012調(diào)試通過)

    這個方法是通過分子(分母)乘1.0或加0.0的方式,將原整數(shù)強行變?yōu)楦↑c二進制,從而實現(xiàn)了除法結(jié)果保留小數(shù)。

    筆者是在編寫機車乘務員工作成績有關軟件的過程中發(fā)現(xiàn)此問題的,筆者用機車的往公里除以返公里之結(jié)果作為機車往、返、還是折返的依據(jù),機車的往返公里都是整數(shù)且不為零,結(jié)果發(fā)現(xiàn)有的機車往公里除以返公里之結(jié)果是零,怎么會是零呢?通過研究MSSql數(shù)據(jù)庫的除法規(guī)則才發(fā)現(xiàn),在MSSql數(shù)據(jù)庫,一個整數(shù)除以另一個整數(shù),運算結(jié)果是要截去小數(shù)只保留整數(shù)的,所以,在往公里小于返公里的情況下(分子小于分母),運算結(jié)果只保留整數(shù)而要截取小數(shù),所以計算結(jié)果為零。

    為了使往公里除以返公里得到正確結(jié)果,筆者采用了分子(分母)加0.0的方式,強行使分子或分母變?yōu)楦↑c二進制,從而使機車往公里除以返公里得到包含小數(shù)的結(jié)果,便于進行機車往、返、折返的判斷。

    3改進建議

    我們首先研究一下VB.NET有關除法的具體規(guī)則。

    VB.NET有兩個除法運算符。

    ‘/,通常之除法,返回一個浮點結(jié)果,例如 2/4=0.5,3/2=1.5。

    ‘\,整數(shù)除法,返回一個整數(shù)結(jié)果,截取小數(shù),例如 2/4=0,3/2=1。

    通過比較可以發(fā)現(xiàn),MSSql數(shù)據(jù)庫除法運算符只有一個運算符,即‘/運算符號,沒有VB.NET整數(shù)除法的運算符號‘\。

    由上分析可知,在MSSql數(shù)據(jù)庫,一個整數(shù)除以另一個整數(shù),結(jié)果只保留整數(shù),小數(shù)部分被舍去,相當于VB.NET的整數(shù)除法操作,不是通常意義上的除法,概念表達與實際結(jié)果名實不符,畢竟除與整除是兩個不同的概念,建議MSSql數(shù)據(jù)庫對此進行改進。

    建議MSSql數(shù)據(jù)庫對一個整數(shù)除以另一個整數(shù)的運算結(jié)果予以改進,在保留整數(shù)商的基礎上,不再截取小數(shù)(或小數(shù)四舍五入亦可),使除法名實相符,不再混同于整除操作。

    參考文獻

    [1] 姚永一.SQL Server數(shù)據(jù)庫實用教程[M].北京:電子工業(yè)出版社,2010:59.

    作者簡介

    曹殿濤(1962-),男;職稱:高級工程師、信息系統(tǒng)項目管理師、信息系統(tǒng)集成高級項目經(jīng)理,現(xiàn)就職單位:國家鐵路集團北京局集團有限公司,研究方向:信息技術在鐵路機務系統(tǒng)的應用。

    猜你喜歡
    改進運算建議
    重視運算與推理,解決數(shù)列求和題
    有趣的運算
    接受建議,同時也堅持自己
    學生天地(2020年32期)2020-06-09 02:57:54
    好建議是用腳走出來的
    人大建設(2018年9期)2018-11-18 21:59:16
    “整式的乘法與因式分解”知識歸納
    撥云去“誤”學乘除運算
    論離婚損害賠償制度的不足與完善
    商(2016年27期)2016-10-17 06:57:20
    高校安全隱患與安全設施改進研究
    商(2016年27期)2016-10-17 05:02:12
    “慕課”教學的“八年之癢”
    大學教育(2016年9期)2016-10-09 08:09:53
    淺析秦二廠設計基準洪水位提升對聯(lián)合泵房的影響
    科技視界(2016年20期)2016-09-29 13:36:14
    漾濞| 宁津县| 博湖县| 呼和浩特市| 响水县| 苏州市| 信丰县| 册亨县| 乌拉特中旗| 平安县| 阳春市| 息烽县| 连平县| 凤冈县| 田林县| 元江| 屏东县| 榆社县| 麻城市| 乌兰县| 大庆市| 二连浩特市| 星座| 内乡县| 丰原市| 合阳县| 雷州市| 贺兰县| 丰城市| 镇巴县| 喜德县| 江山市| 鹤壁市| 马公市| 东乡| 鹤庆县| 德兴市| 西和县| 绥德县| 同心县| 曲周县|