並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 33 件 / 33件

新着順 人気順

BigDecimalの検索結果1 - 33 件 / 33件

  • 金勘定のためのBigDecimalそしてMoney and Currency API

    Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation

      金勘定のためのBigDecimalそしてMoney and Currency API
    • [Ruby]消費税計算にはBigDecimalを使いましょう - Qiita

      消費税計算でありがちな浮動小数点問題 ちょっと電卓で 1800 x 1.08 を計算してみてください。いくつになりましたか? はい、 1944 ですね。 ではターミナルからirbを開いて、 1800 * 1.08 と打ち込んでください。

        [Ruby]消費税計算にはBigDecimalを使いましょう - Qiita
      • 【Java】BigDecimalをちゃんと使う~2018~ - Qiita

        Java9でBigDecimal#ROUND_~系がやっと@Deprecatedになりましたね。 にもかかわらず、未だにBigDecimalを解説するブログやエントリで、BigDecimal#setScale・BigDecimal#divideなどを説明するときにBigDecimal#ROUND_~系を利用して説明されるのはなんなんですか?それ全部、Java9で@Deprecatedですよ? と、最近モヤモヤするので記事書くことにしました。 まずは基本的なことから。 生成・Factoryメソッド 基本 基本的に以下の方法で生成する。 BigDecimal value = BigDecimal.valueOf(1234.567);// 数値系からの生成 BigDecimal value = new BigDecimal("1234.567");// 文字列から生成

          【Java】BigDecimalをちゃんと使う~2018~ - Qiita
        • BigDecimalの仕組みを図解してみた。 - いろいろ解析日記

          目次 基本的な構造 スケールを変える 足し算 引き算 掛け算 割り算 基本的な構造 BigDecimalは数値を整数部とスケールで表現します。スケールとは小数点以下の桁数のことです。 (例) 1.234 スケールを変える スケールの変更はBigDecimalの基本的な操作です。足し算、引き算、割り算と値の比較でも使われます。 基本的な考え方 スケール(小数点位置)を変更する。 なるべく、実質的に値を変えない。(例:2.5と2.50は実質的に同じ値) スケールを増やす 2.5のスケールを「2」にする例。 実質的に値を変えず、小数点以下の桁数を「2」に変える。(2.5→2.50) 小数点を除いて、実際の値(250)を整数値に転記する。 スケールを「2」にする。 スケールを減らす 2.50のスケールを「1」にする例。 実質的に値を変えず、小数点以下の桁数を「1」に変える。(2.50→2.5) 小

          • Javaプログラマーのためのjava.math.BigDecimalまとめ - きどたかのブログ

            以前書いたメモ的なエントリーを読み返してみて、 簡単なエントリーに書きなおそうと思いたった。 java.math.BigDecimalの構造 「精度(precision)」と「スケール(scale)」と「一般的な桁数」の違い 精度とスケールの違いを正しく把握しているかを試すのに、 この質問をしてみるといいでしょう。 質問者「1000の精度(precision)はいくつですか?」 正解者「わかりません。3か2か1です。」 精度(precision)はBigIntegerの桁数(unscaled valueの桁数)と同じです。 see also precision() 文字列から精度を判断することは出来ないことがあり、 スケール(scale)が値によって精度(precision)が変わります。 スケール(scale)は小数点以下の桁数ですが、それは小数点があった場合の話。 スケールが0以上の場

              Javaプログラマーのためのjava.math.BigDecimalまとめ - きどたかのブログ
            • JavaとScalaのBigDecimalについて色々と - xuwei-k's blog

              以下のような経緯で、BigDecimalをいじっていて、知らなかったことがいくつか出てきたので、まとまりが無いですがとりあえずわかったことを順に書いていきます。 前提知識として、BigDecimalはDoubleなどで表しきれない大きな数を表すためのクラスです、そしてscala.math.BigDecimalは、java.math.BigDecimalの薄いラッパーです。単に、BigDecimalといった場合、どちらのこと言ってるのかわかりにくい・・・。 play2scalaz という自作のライブラリで、テストが途中で停止する(?)問題に遭遇 スレッドダンプ取得してみたら、BigDecimalがあやしい Play2のJsonの数字を表すJsNumberは、内部で一旦scalaのBigDecimalとして保持している*1 なので、play2scalazのテストで、BigDecimalからJs

                JavaとScalaのBigDecimalについて色々と - xuwei-k's blog
              • BigDecimal の DoS 脆弱性

                Posted by maki on 10 Jun 2009 Ruby標準ライブラリの一つであるBigDecimalに、DoS(Denial Of Service)状態を引き起こしてしまう脆弱性が存在することが発見されました。 BigDecimalオブジェクトから浮動小数点数(Float)への変換に問題があり、攻撃者はsegmentation faultsを引き起こすことができます。 ActiveRecordライブラリはこのメソッドを使用しているため、多くのRailsアプリケーションはこの脆弱性の影響を受けます。しかしながら、これはRailsのみの問題ではなく、Rubyアプリケーション全体に影響の起こりうる問題です。 影響 攻撃者は巨大なBigDecimalの数値を変換することにより、DoS状態を引き起こすことができます。 その一例を以下に示します。 脆弱性の存在するバージョン 1.8系 1

                • なぜBigDecimalを使わなければならないのか | Java好き

                  floatやdoubleで勘定系の計算をするプログラムを組んでいると正しい計算をしてくれなくてバグになることがある。このときコンピュータが単純な計算ミスをしているわけではない。計算結果が我々の意図通りになっていないだけ。ただ意図しない結果はバグと判断される。

                  • BigDecimalの使い方 | Java好き

                    floatやdoubleでは正確な計算(精度を指定した計算)ができない。そもそも正確な計算用ではない。なぜdouble/floatではなくBigDecimalを使うのかの理由についてははこちらをご覧下さい。

                    • 【そんなBigDecimalで大丈夫か】Javaシステムの計算処理について

                      Twitterの話題に乗っかって、内容をまとめてみようと思います。 私自身の考えではなく、様々な意見を整理したいなという試みです。僕には知識はありません。 B○zzNews並みに頑張ろうと思います。 前提 基本的に、Javaを中心として、その周辺についても少し触れるぐらいのアプローチで書こうと思います。 ポイントとしては、以下の3点です。 ※無意識に利用している部分(基礎的で普段意識しないところ)ではありますが、とても重要な話です。 1.Javaではあたり前のように計算処理にはBigDecimalが使われている 2.ではなぜ、BigDecimalではないといけないのか 3.どういった計算ならBigDecimalを利用するのか/利用しないのか ※本記事は演算誤差についてあまり厳密に的確な内容ではない可能性があります。 Java内の演算処理方法としてベターな方向の提示を目的としていますが、「誤

                        【そんなBigDecimalで大丈夫か】Javaシステムの計算処理について
                      • 金額の計算をBigDecimalで!

                        しょぼちむLongで金額計算 BigDecimalだ!doubleだ!日本円クラスだ!Clojureだ!COBOLだ! なるほどわからん

                          金額の計算をBigDecimalで!
                        • BigDecimalの仕組みを利用してみた。 - いろいろ解析日記

                          BigDecimalを利用するコードを書いてみました。 この記事でやっていることは、BigDecimalの仕組みを図解してみた。で図解した内容に基づいています。 目次 基本的な構造 スケールを変える 足し算 引き算 掛け算 割り算 基本的な構造 基本的な構造を表示するためのメソッドを作りました。 表示形式は「実際の値 = 整数部 * 10 ^ ( - スケール )」です。 // BigDecimalについて詳しく表示する。 public static void printBigDecimal( String msg, BigDecimal val ) { // 整数部を取得する。 BigInteger intValue = val.unscaledValue(); // スケール int scale = val.scale(); // 「実際の値 = 整数部 * 10 ^ ( - スケール

                            BigDecimalの仕組みを利用してみた。 - いろいろ解析日記
                          • Java BigDecimalで足し算, 引き算, 掛け算, 割り算そして四捨五入する方法 | ホームページ制作のサカエン Developer's Blog

                            Java BigDecimalで足し算, 引き算, 掛け算, 割り算そして四捨五入する方法です。 Java を使って浮動小数を計算する場合、BigDecimal クラスを利用しましょう。 float 型 や double 型では、誤差が出る可能性があります! 実務の中で厳密なお金の計算をする場合、特に外貨などを扱う必要が場合は、BigDecimal クラスは必須です。 普通の計算の仕方と違うので、慣れるまで難しいと思うかもしれません。でも厳密な計算をするためには必要ですので、がんばりましょう。 ここでは Java BigDecimalで足し算, 引き算, 掛け算, 割り算そして四捨五入する方法 を紹介します。

                              Java BigDecimalで足し算, 引き算, 掛け算, 割り算そして四捨五入する方法 | ホームページ制作のサカエン Developer's Blog
                            • intとBigDecimalの型変換|Javaキャスト入門

                              Javaプログラム開発の入門・基礎・応用、初心者から中級者までJavaプログラミングの総合サポートサイト ガイドメニュー お問い合わせ サイトマップ テーマ別メニュー 数値を扱うint型と、任意精度の符号付き10進数を扱うBigDecimal型のキャストについて説明しています。 TOP 「Javaプログラミング講座」のトップページを表示します。当サイトは、初心者から中級者までJavaプログラミングの総合サポートサイトです。 Java入門編 開発環境の設定やJavaの基本文など、初めてJavaプログラム開発する人を対象に、入門的なことをまとめています。 メソッド入門 Javaプログラミング初心者向けに、メソッドの利用方法をまとめています。当サイトでは、関数とメソッドは同じものとして扱います。 複数クラス入門 Javaプログラムで複数のクラスを利用する方法を詳しく説明しています。クラス間での値

                              • IntegerとBigDecimalはnewしないほうがいい - うさぎ組

                                タイトルについてTwitterで以前に同じようなことをツイートしましたが、まとめておこうということで。 ちなみに調べたのはSun JDK 1.6.21です。 結論から言うとIntegerとBigDecimalのインスタンスを取得する時はnewではなくvaluesOfを使おう!ってことです。 Integer i = new Integer(10); BigDecimal b = new BigDecimal(10); ではなく Integer i = Integer.valueOf(10); BigDecimal b = BigDecimal.valueOf(10); 1.Integer Integerのコンストラクタの実装を見ると次の感じ。 public Integer(int value) { this.value = value; } で、valueOfを見ると次の実装。 public

                                  IntegerとBigDecimalはnewしないほうがいい - うさぎ組
                                • round BigDecimal

                                  小数点以下を四捨五入する(BigDecimal) 事務処理計算で小数点を扱う場合、浮動小数点である基本型より、BigDecimal classが適しています。 BigDecimalの小数点以下の丸めを行うには、割り算で丸めを行うか、setScale methodで丸めるかの2つがあります。 ここでは特にrounding mode(丸めモード)に注目しています。 import java.math.*; public class ExamRoundBigDecimal { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal("110"); BigDecimal bd2 = new BigDecimal("0.05"); BigDecimal bd3 = bd1.multiply(bd2); Sy

                                  • floatをもとにBigDecimalオブジェクトを作成する。 - 未来を愛すべきこと-Javaやったり技術書読んだり

                                    doubleからBigDecimalオブジェクトを作成する場合、 BigDecimal bd = new BigDecimal(doubleVal); としてしまうと、浮動小数点で正確に表せない数値の場合、期待結果とズレる場合があります。 Javadocの BigDecimal(double) コンストラクタから引用↓ Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle # 一方、String コンストラクタは完全に予測可能である。new BigDecimal("0.1") と記述すると、「正確に」 0.1 と等しい BigDecimal が作成される。そのため、通常は、これの代わりに String コンストラクタを使用することが推奨されている # BigDecimal のソー

                                      floatをもとにBigDecimalオブジェクトを作成する。 - 未来を愛すべきこと-Javaやったり技術書読んだり
                                    • JavaでBigDecimal同士の比較 | Java | 株式会社CONFRAGE

                                      BigDecimalオブジェクト同士の大小比較にはcompareToメソッドを使用します。 この時compareToメソッドの戻り値はAPIには、 BigDecimalの値が比較するBigDecimaより小さい場合は-1、等しい場合は0、大きい場合は1 とあります。 ですので、以下のように戻り値を-1や1と比較しがちです。 if(a.compareTo(b) == -1){ // 処理 } このように比較すると全ての比較演算子が使用できません。ですのでcompareToメソッドの戻り値は必ず0と比較します。 0と比較することにより比較演算子(<、==、>、>=、!=、<=)の全てが使用できるようになります。 以下は、例です。 import java.math.BigDecimal; public class BigDecimalTest { public static void main(

                                      • Rubyによる 小数 と Float と BigDecimalについて...(初心者向け) - Qiita

                                        はじめに これまで、リアルなお金を扱うシステムを作ったこともなかったし、小数を含む演算を実装することがこれまでなかったので小数演算の経験がほとんどありませんでした。(ほんと整数だけで大抵のことは大丈夫!!!) Float を使うと まるめ誤差 が生じて四捨五入や繰り上げ、繰り下げを利用するときに誤差が影響する場合があるということは話に聞いていたので、実際にどういう影響があるのか、対応する方法などについてRubyを使って調べてみました。 そもそも小数とは まずは小数についてをざっくり調べて見ると、、 浮動小数点数 - Wikipedia とか 固定小数点数 - Wikipedia とか色々出てくる。。これらをざっくり読むだけではうーんという感じなのでとりあえず表記方法だけみていこうと思います。 小数の表記方法 小数といえば、例えば 1.23 これです!! 小数点の表記方法としては他には以下の

                                          Rubyによる 小数 と Float と BigDecimalについて...(初心者向け) - Qiita
                                        • Javaプログラマーがjava.math.BigDecimalについて知るべきこと - きどたかのブログ

                                          2012/11/4追記 こっち見てもらった方がいいかも。 Javaプログラマーのためのjava.math.BigDecimalまとめ - きどたかのブログ 2012/11/4追記 終わり ざっくりと羅列してみた。 java.math.BigDecimalは、クラス説明にある通り任意精度のスケールなし整数と、32bitのスケールで構成される。つまりは、BigDecimalはBigIntegerとintで構成されている。 precisionとは「精度」であり、仮数の桁数である。仮数は任意精度のスケールなし整数のBigIntegerで、その10進表現での桁数である。 precisionは一番左から初めに現れる0以外の数字から数えた桁数である。0.03の精度は1であり、スケール2である。 BigDecimalの精度はprecisionで表現出来るが、double等の浮動小数点の精度は全体で使用する

                                            Javaプログラマーがjava.math.BigDecimalについて知るべきこと - きどたかのブログ
                                          • Javaサンプルソース【MathとBigDecimalによる小数点の四捨五入、切り捨て、切り上げ】『愛のJava256本ノック』

                                            「小数点第2位で四捨五入」のように、数値を所定の桁数に丸め込む方法を紹介します。BigDecimalがどれくらいビックな野郎かがわかるハズ! /** * 愛のJava256本ノック for Java 5.0 * Javaサンプルソース ver0.2C "Rounding" * Rounding.java 「MathとBigDecimalによる小数点の四捨五入、切り捨て、切り上げ」 * * 2005/09/23 制作:安永ノリカズ * * 【コンパイル&実行方法】 * >javac Rounding.java * >java Rounding * 【キーワード】 * ceil(切り上げ), floor(切り下げ), round(四捨五入), 10進数(decimal), * 列挙型(enumerated type), * 【試してみよう】 * BigDecimalに用意されている8個の丸め込

                                            • BigDecimal (Java Platform SE 6)

                                              java.math クラス BigDecimal java.lang.Object java.lang.Number java.math.BigDecimal すべての実装されたインタフェース: Serializable, Comparable<BigDecimal> public class BigDecimalextends Numberimplements Comparable<BigDecimal> 変更が不可能な、任意精度の符号付き小数です。BigDecimal は、任意精度の「スケールなしの整数値」と、32 ビット整数の「スケール」で構成されます。0 または正の場合、スケールは小数点以下の桁数です。負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする 10 の累乗を乗算します。つまり、BigDecimal で表される数値は (unscaledValue × 1

                                              • Ruby の BigDecimal にサービス拒否(DoS)脆弱性

                                                Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                                  Ruby の BigDecimal にサービス拒否(DoS)脆弱性
                                                • java.math.BigDecimalの最大桁数(理論値) - きどたかのブログ

                                                  面倒臭いことを調べることになったJavaプログラマーに捧ぐ すこし時間を割いて最大桁数を計算してみることにしました。 結論からいうと 2793926648桁くらいだと思う。 精度の限界は646443000桁くらいです。 無量大数が128桁です、と補足しておこう。 動かすことが出来るかは保証できない。 3GB与えても私はprecision()の結果を得られなかった。 では机上検証してみようか。 この式を用いますが、これだけでは足りませんね。 BigIntegerの内容が必要です。 BigIntegerのいまの実装を見ると、数字はint配列で持っているようです。 BigIntegerは2の補数表現で数字をもっているそうです。 2の補数というのは先頭ビットが1なら負で、0なら正です。 intは4バイトの符号付き整数です。 また、Integer.SIZEにあるように、 2の補数のバイナリ形式に使用

                                                    java.math.BigDecimalの最大桁数(理論値) - きどたかのブログ
                                                  • BigDecimalとは : JavaA2Z

                                                    J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.math.BigDecimal。 実数値を格納するためのクラス。 ただし、格納方法は浮動小数点ではない。 double型のような浮動小数点形式で実数を処理すると、丸め誤差が生まれる。そのため、正確な値を格納するために、浮動小数点ではない丸め誤差の発生しない方法で値を格納するのがBigDecimalクラスである。 BigDecimalクラスでは、実数値を「整数値」として扱い、この値と「小数点の位置」を別々に管理することで、実数値を丸め誤差なしに格納する。 格納された値は、BigDecimalクラスのメソッドで四則演算や比較を行うことができる。逆に言うと、BigDecimalクラスからdouble型等で値を取り出すと、その時点で丸め誤差が生まれ、値が正確ではなくなってしまう。 これは、BigDecimalクラスに値を格納す

                                                    • StringとBigDecimalの型変換|Javaキャスト入門

                                                      Javaプログラム開発の入門・基礎・応用、初心者から中級者までJavaプログラミングの総合サポートサイト ガイドメニュー お問い合わせ サイトマップ テーマ別メニュー 文字列を扱うString型と、任意精度の符号付き10進数を扱うBigDecimal型のキャストについて説明しています。 TOP 「Javaプログラミング講座」のトップページを表示します。当サイトは、初心者から中級者までJavaプログラミングの総合サポートサイトです。 Java入門編 開発環境の設定やJavaの基本文など、初めてJavaプログラム開発する人を対象に、入門的なことをまとめています。 メソッド入門 Javaプログラミング初心者向けに、メソッドの利用方法をまとめています。当サイトでは、関数とメソッドは同じものとして扱います。 複数クラス入門 Javaプログラムで複数のクラスを利用する方法を詳しく説明しています。クラス

                                                      • freee の API では BigDecimal をどう扱うべきなのか? - freee Developers Hub

                                                        この記事は freee Developers Advent Calendar 2021 の最終日の記事です🎄 普段は freee会計 や freee人事労務 といった、freee におけるコアサービスの開発の面倒を見る、プロダクトコア開発本部の本部長をしています id:yo_waka です。 前回書いたときは Webpack でビルドしていましたが、昨日も Webpack でビルドしていました。 今回何を書こうかなーと悩んでいたのですが、最近 BigDecimal の扱いについて社内で議論する機会があったので共有してみます。 あらまし Rubyのバージョンアップをするぞ 依存ライブラリを新しいRubyバージョンに対応したものに上げていくぞ jbuilder 並びに JSON gem のバージョンを上げていくぞ <= 今日はここの話題です freee では、Rails で API レスポン

                                                          freee の API では BigDecimal をどう扱うべきなのか? - freee Developers Hub
                                                        • 数値がBigDecimal型な計算式言語を作ってみた - かとじゅんの技術日誌

                                                          どもー、しげる塾 一期生のかとうです。 を見て悲しくなった。Javaってひどい。0.1は文字列で渡さないと誤差が出るってさ。泣ける。 C#なら Console.WriteLine( 1.00M - 9M * .10M ); でOK 「Javaってかわいそうとか、ひどい」っていわれたので、BigDecimalで動作する計算式言語を作ってみたw 使い方はこんな感じ。計算式を文字列で渡してください。結果はBigDecimalで返ってきます。 System.out.println(new Calculator().eval("1 - (9 * 0.1)")); 結果はもちろん期待通りw 0.1少しはかわいくなったかなw jarファイルはこちら。 calculator-1.0.0.jar さーて、どうやって実装してるのー?と興味を思った方は続きをw Calculatorの内側 ここからはパーサの話な

                                                          • GitHub - NZKoz/bigdecimal-segfault-fix: Provides a quick workaround for the segfault bug in Ruby (CVE-2009-1904)

                                                            There is a segfault bug in ruby’s big decimal library which can be triggered by users providing known-bad values. If you wish to test whether your application is secure run example.rb. This script should exit normally, not segfault. The workaround has negative side-effects. Specifically it prevents you from using BigDecimal to deal with large numbers (more than 255 digits) or from providing the nu

                                                              GitHub - NZKoz/bigdecimal-segfault-fix: Provides a quick workaround for the segfault bug in Ruby (CVE-2009-1904)
                                                            • NEWS: Fix description of BigDecimal.new [ci skip] · ruby/ruby@308360f · GitHub

                                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                NEWS: Fix description of BigDecimal.new [ci skip] · ruby/ruby@308360f · GitHub
                                                              • BigDecimal 基本編 : Java好き

                                                                小数がからむ計算の場合、 floatやdoubleを使うとその性質上必ず誤差が出る。 よって、お金の計算などの正確さが必要な場合は BigDecimalは必須。 クラス図は次のようになる。 本体のBigDecimal以外も「MathContext」「RoundingMode」を利用する。 生成 BigDecimalは「16種類のコンストラクタ」or「3つのvalueOf()」で生成できる。 どれを使用するかは、次の順に検討する。 文字列を使ったコンストラクタ new BigDecimal(String val) long値を受け取るvalueOf valueOf(long val) long値とそのスケールを受け取るvalueOf valueOf(long unscaledVal, int scale) double値とMatchContextを受け取るコンストラクタ BigDecimal

                                                                  BigDecimal 基本編 : Java好き
                                                                • 誤差が出ない演算をする(BigDecimal) - Javaちょこっとリファレンス

                                                                  float型やdouble型の浮動小数の計算では、誤差が出る可能性があります。 例えば下の2つの演算では両方とも結果は3分の2となるので同じ値が返るはずですが・・・ double val1 = 1.0 - (1.0 / 3.0); // 1-(1/3) → 3分の2 double val2 = 2.0 / 3.0; // → 3分の2 画面表示してみると微妙に誤差がでてしまいます。 val1 → 0.6666666666666667 val2 → 0.6666666666666666 金額計算等で絶対に誤差が許されない場合は、BigDecimal型を使って演算を行います。 ただし、BigDecimal型のパフォーマンスは悪いです。 サンプルソースコード 例)BigDecimalを使用した四則演算サンプル BigDecimalSample.java import java.math.BigD

                                                                  • OSX 10.6.3 installs new Ruby with faulty BigDecimal — Able Technology - Web Application Programmers and Consultants

                                                                    Able Technology Enterprise level web applications and consultation, we are your able technology partners. Installing the latest upgrade from Apple of Snow Leopard version 10.6.3 will update the installed version of Ruby. The version of ruby installed is: ruby --version ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0] Unfortunately, there is a known problem with patchlevel 173. BigDec

                                                                    1