(57)【要約】【課題】連続して発生する数値を丸め処理する場合において、全体としての誤差を小さくできるようにした丸め処理方法を提供する。【解決手段】数値Ｘの第ｎ位の値が「４」以下である場合に、当該第ｎ位の値を切り捨て処理し、また、受け付けた数値の第ｎ位の値が「６」以上である場合に、当該第ｎ位の値を切り上げ処理する。また、受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」以外である場合に、当該第ｎ位の値を切り上げ処理する。そして、受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」である中間値である場合に、当該中間値の切り捨て処理と切り上げ処理を交互に繰り返すように切り捨て処理もしくは切り上げ処理を選択する。【選択図】図５
2015001782.tif 000002
【特許請求の範囲】
【請求項１】
数値の第ｎ位の値を切り捨てもしくは切り上げする丸め処理方法において、
第ｎ位を切り下げた際の数値と第ｎ位を切り上げた際の数値のちょうど中間の値を中間値とした場合に、受け付けた数値が当該中間値未満である場合に、第ｎ位の値を切り捨てるステップと、
受け付けた数値が当該中間値よりも大きい場合に、第ｎ位の値を切り上げるステップと、
受け付けた数値が当該中間値である場合に、切り捨て処理と切り上げ処理が周期的となるように切り捨て処理もしくは切り上げ処理を選択するステップと、
を備えるようにしたことを特徴とする丸め処理方法。
【請求項２】
数値の第ｎ位の値を切り捨てもしくは切り上げする丸め処理方法において、
受け付けた数値の第ｎ位の値が「４」以下である場合に、当該第ｎ位の値を切り捨てるステップと、
受け付けた数値の第ｎ位の値が「６」以上である場合に、当該第ｎ位の値を切り上げるステップと、
受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」以外である場合に、当該第ｎ位の値を切り上げるステップと、
受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」である中間値である場合に、当該中間値の切り捨て処理と切り上げ処理が周期的となるように切り捨て処理もしくは切り上げ処理を選択するステップと、
を備えるようにしたことを特徴とする丸め処理方法。
【請求項３】
前記切り捨て処理もしくは切り上げ処理を選択するステップが、切り捨て処理と切り上げ処理を交互に選択するようにしたものである請求項１または２に記載の丸め処理方法。
【請求項４】
数値の第ｎ位の値を切り捨てもしくは切り上げする丸め処理装置において、
第ｎ位を切り下げた際の数値と第ｎ位を切り上げた際の数値のちょうど中間の値を中間値とした場合に、受け付けた数値が当該中間値未満である場合に、第ｎ位の値を切り捨てる切り捨て処理部と、
受け付けた数値が当該中間値よりも大きい場合に、第ｎ位の値を切り上げる切り上げ処理部と、
受け付けた数値が当該中間値である場合に、切り捨て処理と切り上げ処理が周期的となるように切り捨て処理もしくは切り上げ処理を選択する中間値決定部と、
を備えるようにしたことを特徴とする丸め処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターで扱われる数値の端数を丸め処理する方法に関するものであり、より詳しくは、複数の数値の端数を丸め処理する際に、全体としての誤差を小さくできるようにした丸め処理方法に関するものである。
【背景技術】
【０００２】
一般に、コンピューターで数値計算を行う場合、数値を所定の桁数に丸める丸め処理が行われている。このような丸め処理としては四捨五入が代表的な例として挙げられるが、これ以外にも下記の特許文献に示されるような丸め処理の方法がある。
【０００３】
この特許文献に記載される丸め処理の方法は、例えば、ある数値を小数第一位に丸め処理する場合に、小数第二位の値が「４」であった場合は切り捨て処理を行い、小数第二位の値が「６」であった場合は切り上げ処理を行い、小数第二位の値が「５」である場合は、その数値単体で所定の条件に従って切り捨て処理あるいは切り上げ処理を行うようにしたものである。このようにすれば、四捨五入のように切り上げられる数値が多くなってしまうということが少なくなり、統計処理などを行う際における誤差を小さくすることができるというメリットがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−０９１３９８号公報
【特許文献２】特開２０００−２２２１７３号公報
【特許文献３】特開２００４−３３４９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような特許文献１に記載される丸め処理においても、次のような問題がある。
【０００６】
すなわち、上記特許文献に示される丸め処理方法では、数値単体で「５」を切り捨てるか切り上げるかを単独で判断していたため、例えば、連続して発生する数値を丸め処理する場合、場合によっては、全体として切り上げる方向に数値が偏ってしまったり、あるいは逆に、切り捨てられる方向に数値が偏ってしまう可能性がある。すなわち、例えば、丸め処理された複数の数値を加算する場合、その誤差として、すべての数値を切り捨てた数からすべての数値を切り上げた数の範囲内で誤差を生じてしまう。そして、このように誤差を生じてしまうと、例えば、空気中の汚染物質を測定して所定の時間毎に加算出力する場合、警報を出すべき状況であるにもかかわらず数値が低く測定されて警報を出せなかったり、あるいは、逆に警報を出す必要がない状況であるにもかかわらず、警報を出してしまう可能性がある。
【０００７】
そこで、本発明は、上記課題に着目して、複数の数値を丸め処理する場合において、全体としての誤差を小さくできるようにした丸め処理方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
すなわち、本発明は上記課題を解決するために、数値の第ｎ位の値を切り捨てもしくは切り上げする丸め処理方法において、第ｎ位を切り下げた際の数値と第ｎ位を切り上げた際の数値のちょうど中間の値を中間値とした場合に、受け付けた数値が当該中間値未満である場合に、第ｎ位の値を切り捨てるステップと、受け付けた数値が当該中間値よりも大きい場合に、第ｎ位の値を切り上げるステップと、受け付けた数値が当該中間値である場合に、切り捨て処理と切り上げ処理が周期的になるように切り捨て処理もしくは切り上げ処理を選択するステップとを備えるようにしたものである。
【０００９】
このようにすれば、切り捨てと切り上げの中間に位置する数値を均等に割り振ることができるため、全体として切り上げの方向に偏ったり、あるいは、切り捨ての方向に偏ったりするようなことがなくなる。これにより、例えば、これら複数の数値を丸め処理する場合において、全体としての誤差を小さくすることができる。
【００１０】
また、このような発明において、受け付けた数値の第ｎ位の値が「４」以下である場合に、当該第ｎ位の値を切り捨てるステップと、受け付けた数値の第ｎ位の値が「６」以上である場合に、当該第ｎ位の値を切り上げるステップと、受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」以外である場合に、当該第ｎ位の値を切り上げるステップと、受け付けた数値の第ｎ位の値が「５」であって、当該第ｎ位に続く値がすべて「０」である中間値である場合に、当該中間値の切り捨て処理と切り上げ処理が周期的になるように切り捨て処理もしくは切り上げ処理を選択するステップとを備えるようにする。
【００１１】
このようにすれば、第ｎ位の値が「４」以下か「６」以上であるか否かによって、大まかに切り捨てと切り上げ処理を行うことができるとともに、第ｎ位の値が「５」であっても、それに続く値が存在するか否かによって切り上げするか否かを選択できるようにしたので、丸め処理を迅速に行わせることができるようになる。
【００１２】
さらに、中間値を丸め処理する場合、切り捨て処理と切り上げ処理を交互に繰り返すようにする。
【００１３】
このように処理すれば、不特定の個数の数値を扱う場合であっても、加算処理などの統計処理を行った場合には、最大でも一個分の切り上げもしくは切り捨て分の誤差しか生じないようにすることができる。
【発明の効果】
【００１４】
本発明によれば、数値の第ｎ位の値を切り捨てもしくは切り上げする丸め処理方法において、第ｎ位を切り下げた際の数値と第ｎ位を切り上げた際の数値のちょうど中間の値を中間値とした場合に、受け付けた数値が当該中間値未満である場合に、第ｎ位の値を切り捨てるステップと、受け付けた数値が当該中間値よりも大きい場合に、第ｎ位の値を切り上げるステップと、受け付けた数値が当該中間値である場合に、切り捨て処理と切り上げ処理が周期的になるように切り捨て処理もしくは切り上げ処理を選択するステップとを備えるようにしたので、全体として切り上げの方向に偏ったり、あるいは、切り捨ての方向に偏ったりするようなことがなくなる。これにより、例えば、これら複数の数値を丸め処理する場合において、全体としての誤差を小さくすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明におけるコンピューターの構成を示す図
【図２】同形態における丸め処理装置を構成するコンピューターの機能ブロック図
【図３】同形態における数値と第ｎ位の値を示す図
【図４】同形態における丸め処理を行う場合の概念図
【図５】同形態における丸め処理を行う場合のフローチャートを示す図
【発明を実施するための形態】
【００１６】
以下、本発明の一実施の形態について図面を参照しながら説明する。この実施の形態における丸め処理装置１は、パーソナルコンピューターや携帯端末などの情報処理装置、各種計測機器などによって構成されるものであって、図２の機能ブロック図に示すように、複数の数値の中から一つの数値Ｘの入力を受け付ける数値受付部２と、その受け付けた数値Ｘを丸め処理するための桁の位置ｎ（以下「第ｎ位」という）を受け付ける丸め位置受付部３と、その受け付けた第ｎ位における数値の値を抽出する値抽出部４と、その値抽出部４で抽出された値Ｘｎやそれ以降に続く値を用いて切り捨てあるいは切り上げ処理を行う切り捨て処理部５１および切り上げ処理部５２とを有する。そして、特徴的には、第ｎ位の値が「５」であってそれ以降に続く値が存在しない場合を「中間値」とみなし、受け付けた値が、その中間値未満である場合には切り捨て処理、中間値よりも大きい場合は切り上げ処理をするとともに、受け付けた値が中間値であった場合は、先に中間値を有する数値を切り捨てもしくは切り上げた個数とが同じになるように切り捨て処理もしくは切り上げ処理を選択して行うようにしたものである。
【００１７】
以下、本実施の形態の具体的構成について詳細に説明する。なお、本実施の形態における丸め処理装置１の各機能実現手段は、図１に示すような、ＣＰＵなどの演算装置１１、ＲＯＭやＲＡＭなどの記憶装置１２、キーボードや外部入力端子などの入力装置１３、ディスプレイや外部出力端子などの出力装置１４などを協働させて機能するようにしている。
【００１８】
まず、数値受付部２は、丸め処理の対象となる数値Ｘの入力を受け付ける。この数値Ｘを受け付ける場合、複数の数値の中から順次一つずつ数値を受け付けるようにする。このような具体例としては、例えば、空気中の汚染物質を一定時間毎に測定した計測値や、表計算ソフトにおける会計処理の数値、画像処理を行う際の輝度値、音声処理をする際における音圧レベルなど多種多様なものが考えられる。
【００１９】
次に、丸め位置受付部３は、この受け付けた数値Ｘに対する丸め処理を行うための第ｎ位の「ｎ」の入力を受け付ける。この「ｎ」の値としては、図３に示すように、第一位を丸め処理して「１０」の位に揃える場合は「ｎ＝−１」とし、逆に、小数第一位を丸め処理して「１」の位に揃える場合は「ｎ＝１」、小数第二位を丸め処理して小数第一位に揃える場合は「ｎ＝２」、小数第三位を丸め処理して小数第二位に揃える場合は「ｎ＝３」などに設定する。なお、図３では、数値「３．４５６」を丸め処理する場合の具体例を記載しているが、第一位（ｎ＝−１）の値Ｘｎは「３」、小数第一位（ｎ＝１）の値Ｘｎは「４」、小数第二位（ｎ＝２）の値Ｘｎは「５」、小数第三位（ｎ＝３）の値Ｘｎは「６」となる。この丸め位置受付部３は、ディスプレイに表示された受付画面においてキーボードなどの入力装置１３から入力できるようにしておいてもよく、あるいは、プログラムにおいてあらかじめ設定しておいてもよい。
【００２０】
また、値抽出部４は、前記受け付けたＸの数値の中から、丸め位置受け付け部３で受け付けた第ｎ位の値Ｘｎの値を抽出する。図３の例では、Ｘ＝３．４５６でｎ＝２の場合に、小数第２位の値である「５」の値を抽出する。
【００２１】
次に、切り捨て処理部５１は、このように受け付けた第ｎ位の値に基づいて、受け付けた数値Ｘの切り捨て処理を行う。この切り捨て処理に際しては、受け付けた数値Ｘから第ｎ位の値Ｘｎを抽出し、その値Ｘｎが「４」以下の値であれば、受け付けた数値Ｘにおける第ｎ位を切り捨てる。
【００２２】
一方、切り上げ処理部５２は、このように受け付けた「ｎ」の値に基づいて、受け付けた数値Ｘの切り上げ処理を行う。この切り上げ処理に際しては、受け付けた数値Ｘから第ｎ位の値Ｘｎを抽出し、その値が「６」以上であれば、受け付けた数値Ｘの第ｎ位を切り上げる。
【００２３】
このような処理において、Ｘｎ＝中間値である場合は、次のような処理に基づいて切り捨てもしくは切り上げを中間値決定部５３で決定する。
【００２４】
まず、Ｘｎ＝５である場合、例えば、Ｘ＝３．４５６でｎ＝２のような場合、「５」に続く数値に「６」が含まれているため、このＸｎを切り上げ処理する。このような処理をコンピューターにおいて行う場合、第ｎ位に続く値（この場合「５」と「６」を一つの数値（すなわち「５６」）とみなすコマンドを用い、その値がちょうど「５」ではないため、中間値とはみなされず、切り上げ処理を行う。一方、例えば、Ｘ＝３．４５でｎ＝２のような場合、「５」に続く値が存在しないため、この値を中間値とみなして、切り捨てもしくは切り上げを選択して処理を行う。
【００２５】
この中間値決定部５３で切り捨てもしくは切り上げを行う場合、第一の例としては、直前に中間値を有する数値Ｘを切り捨てもしくは切り上げ処理した方法とは逆の丸め処理を行う。すなわち、直前の中間値である数値Ｘを切り捨て処理した場合は、次の中間値である数値Ｘを切り上げ処理し、逆に、直前の中間値である数値Ｘを切り上げ処理した場合は、次の中間値である数値Ｘを切り捨て処理する。このように中間値である数値Ｘを交互に切り捨てもしくは切り上げ処理する場合、例えば、最初にカウンターの値を「０」に設定しておき、中間値Ｘｎである数値Ｘを受け付けた場合にそのカウンターの値を読み取り、カウンターの値が「０」であれば切り上げ処理を行う。そして、そのカウンターの値を「１」に書き換える。また、このカウンターの値が「１」の状態で、次に、中間値Ｘｎである数値Ｘを受け付けた場合は、切り捨て処理を行うとともに、カウンターの値を「０」に書き換える。このように、順次、中間値である数値Ｘが入力されてくる度に、カウンターの値を参照して切り捨てと切り上げの処理を交互に繰り返す。なお、ここではカウンターの値を用いて交互に切り捨てと切り上げを繰り返すようにしているが、これ以外の方法で交互に処理するようにしてもよい。
【００２６】
そして、出力部６は、このように丸め処理された数値を出力する。この出力に際しては、そのまま丸め処理を行った数値を出力してもよく、あるいは、統計処理を行ってから出力してもよい。このような統計処理としては、例えば、丸め処理された数値を順次加算する方法や、平均値や分散値、標準偏差などがある。
【００２７】
次に、このように構成された丸め処理装置１における丸め処理の流れについて、図５のフローチャートを用いて説明する。
【００２８】
なお、丸め処理を行う前提として、丸め処理を行う第ｎ位の「ｎ」や丸め幅の幅数「ｍ」が設定されているものとし、最初に中間値を有する数値Ｘを丸め処理する際のカウンターの値はデフォルトで「０」に設定されているものとする。
【００２９】
まず、複数の数値のうち、一つの数値Ｘを抽出して数値受付部２で受け付けると（ステップＳ１）、あらかじめ記憶装置１２に設定されているｎの値（例えば「２」）を読み出して、数値Ｘの中から第ｎ位の値Ｘｎを抽出する（ステップＳ２）。
【００３０】
そして、その抽出された第ｎ位の値Ｘｎが「４」以下の数値である場合は（ステップＳ３）、第ｎ位の値Ｘｎを切り捨てする（ステップＳ４）。
【００３１】
また、その抽出された第ｎ位の値Ｘｎが「６」以上の数値である場合は（ステップＳ５）、その数値Ｘの第ｎ位の値Ｘｎを切り上げる（ステップＳ６）。
【００３２】
一方、その抽出された第ｎ位の値Ｘｎが「５」である場合、それ以降に続く数値を一つの数字とみなすコマンドを用い、その値がちょうど「５」である場合は（ステップＳ７）、中間値とみなして、カウンターの値を参照し、カウンターの値が「０」であれる場合は（ステップＳ８：ＹＥＳ）、切り上げ処理を行い（ステップＳ１１）、カウンターの値を「１」に書き換える（ステップＳ１２）。また、逆に、カウンターの値が「１」であれば（ステップＳ８：Ｎｏ）、切り捨て処理を行って（ステップＳ９）、カウンターの値を「０」に書き換える（ステップＳ１０）。
【００３３】
一方、第ｎ位の「５」以降に続く数値が存在している場合（その続く数値がすべて「０」の場合を除く）は、切り上げ処理を行う（ステップＳ６）。
【００３４】
そして、このように丸め処理を行った数値を出力する（ステップＳ１３）。また、これらの丸め処理された数値を加算、平均値の算出、分散の算出、標準偏差の算出などの統計処理を行ってもよい。
【００３５】
このように上記実施の形態によれば、中間値を丸め処理する際に、中間値である数値を直前にどのように処理したかによって、その中間値を有する数値を切り捨てもしくは切り上げするようにしたので、中間値である数値を単独で切り捨て処理するか切り上げ処理する場合のように、全体として片方の数値に偏ってしまう可能性がなくなり、全体としての誤差を小さくすることができる。
【００３６】
また、上述のように中間値を交互に切り捨てもしくは切り上げるようにしたので、処理する中間値の個数が不明である場合であっても、最大限一つの中間値を切り捨てもしくは切り上げ処理した値の誤差しか生じることがない。これにより、例えば、大気中の汚染物質を測定するような場合に、警報などの境界値近傍で不均一な誤差が最小となり、さらには、アナログの音声データをデジタルに変換する際の変換誤差を最小にすることができるなどのメリットがある。また、これ以外にも、移動する３次元中の位置情報の誤差を最小にすることができたり、あるいは、フォントによるスムージング誤差を最小にすることができたり、変動する金利シミュレーションの誤差を最小にすることができるなどのメリットがある。
【００３７】
なお、本発明は上記実施の形態に限定されることなく、種々の態様で実施することができる。
【００３８】
例えば、上記実施の形態では、丸め処理を行う桁の位置として第「ｎ」位を入力するようにしたが、丸め処理された後の桁数（この場合、第「ｎ＋１」位）の値を入力するようにしておき、それよりも小さな桁位置「ｎ」の値を丸め処理するようにしてもよい。
【００３９】
また、上記実施の形態では、切り捨て処理と切り上げ処理を交互に繰り返すようにしたが、これに限らず、それぞれ切り捨てと切り上げを同じ回数ずつ行うなど、周期的に切り捨てや切り上げを選択するようにしてもよい。
【００４０】
さらに、上記実施の形態では、統計処理することなく出力を行ってもよいし、その後、他の統計処理部にて処理を行うようにしてもよい。
【符号の説明】
【００４１】
１・・・丸め処理装置
１１・・・演算装置
１２・・・記憶装置
１３・・・入力装置
１４・・・出力装置
２・・・数値受付部
３・・・丸め位置受付部
４・・・値抽出部
５１・・・切り捨て処理部
５２・・・切り上げ処理部
５３・・・中間値決定部
６・・・出力部
【図１】
2015001782.tif 000003
【図２】
2015001782.tif 000004
【図３】
2015001782.tif 000005
【図４】
2015001782.tif 000006
【図５】
2015001782.tif 000007