並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 19 件 / 19件

新着順 人気順

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

  • JDKバージョンとBigDecimalの挙動について - RAKUS Developers Blog | ラクス エンジニアブログ

    BigDecimalの値保持について BigDecimalから値の抽出 誤った表記変換方法 正しい文字列を取得する方法 まとめ お金の計算など正確にJavaで計算をするうえで欠かせないBigDecimalですが、 一部JDKバージョンで挙動に変更が入っていました。 この改修により問題に直面してしまったため備忘録がてら挙動をまとめることにしました。 BigDecimalの値保持について まず、本題に入る前にBigDecimalはどのように値を保持しているかを見てみましょう。 BigDecimalは以下の要素を保持しています。 intCompact 数値の仮数部を保持する intVal BigDecimalのスケーリングされていない値 precision 保持している仮数部の桁数 scale 少数のスケール では実際に見てみましょう。 BigDecimal bigDecimal1 = new

      JDKバージョンとBigDecimalの挙動について - RAKUS Developers Blog | ラクス エンジニアブログ
    • 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
      • ActiveRecord を使っていて NoMethodError: undefined method `new' for BigDecimal:Class と言われたら - ryopeko の何か

        ActiveRecord でクエリを実行した結果 BigDecimal 型のインスタンスを組み立てるようなものが含まれている場合、使っている Ruby のバージョンや他ライブラリのバージョン次第でこのようなエラーが出ます。 NoMethodError: undefined method `new' for BigDecimal:Class 先日詳細知らされていない状態でこのエラーを渡されたのでとりあえず調べてみると以下の Qiita の記事がトップに出てきました。 qiita.com 結論から言うとこの記事に書いてある対処方法は端的に言ってよろしくないのでやめましょう。 そもそもこのエラーが出る問題の原因として BigDecimal の扱いが、とあるバージョンから変わっているからです。 バージョンによる BigDecimal の取扱方の違いは README.md にちゃんと書いてあります。

          ActiveRecord を使っていて NoMethodError: undefined method `new' for BigDecimal:Class と言われたら - ryopeko の何か
        • 【Rails】NoMethodError: undefined method `new' for BigDecimal:Classの対処法 - Qiita

          【Rails】NoMethodError: undefined method `new' for BigDecimal:Classの対処法Railserror

            【Rails】NoMethodError: undefined method `new' for BigDecimal:Classの対処法 - Qiita
          • BigDecimalメモ(Hishidama's java.math.BigDecimal Memo)

            BigDecimalを作るコンストラクターやメソッドには、引数にMathContextやスケール(小数点以下を保持する桁数)を指定するオーバーロードがあるものもある。 Stringを引数にとる場合、通常の数値表記(「123」や「123.4」とか)の他に、指数表記(「1e10」とか)も受け入れられる。 BigDecimalは不変オブジェクトなので、一旦初期化した値を変更することは出来ない。 (add, subtract, multiply, divideといった演算メソッドを呼ぶと、新しいBigDecimalを返す。(List#add()だと自らの中に要素を追加するのに、BigDecimal#add()は自らを変更せずに別のBigDecimalを返すので、違和感がある…。日付時刻だと、加算はaddでなくplusメソッドとなっている)) valueOf(long)を使ってBigDecimalを

            • BigDecimal (Java Platform SE 8)

              すべての実装されたインタフェース: Serializable, Comparable<BigDecimal> public class BigDecimal extends Number implements Comparable<BigDecimal> 変更が不可能な、任意精度の符号付き10進数です。BigDecimalは、任意精度のスケールなしの整数値と、32ビット整数のスケールで構成されます。0または正の場合、スケールは小数点以下の桁数です。負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。つまり、BigDecimalで表される数値は(unscaledValue×10-scale)です。 BigDecimalクラスは、算術、スケール操作、丸め、比較、ハッシング、および書式変換の演算を提供します。toString()メソッドはBigDecim

              • JavaのBigDecimalでハマらないために - Qiita

                同僚がBigDecimalの扱いでハマったのでメモ。 イミュータブル(Immutable)とは 変数の値オブジェクトを操作するとき、その変数オブジェクト自身の値を書き換えれることを「ミュータブル」、書き換えれないことを「イミュータブル」といいます。Javaの場合、intやdoubleCalendarはミュータブル、Stringはイミュータブルになります。 BigDecimalはどっち? BigDecimalのAPIドキュメント https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html 足し算をする add メソッドについて見てみましょう。 /** 値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。 パラメータ:

                  JavaのBigDecimalでハマらないために - Qiita
                • JavaのBigDecimalの割り算の丸め処理をPythonに書き換える - Qiita

                  最近Javaで書かれたバッチをPythonに書き換えている。 Javaで正確な丸めを行うためにBigDecimalを使ったコードがある。 それをPythonに書き換える際に対応するメソッドがなく困った。 本記事では対応策をまとめる。 Java側 Javaのコードが以下のようだとする。 import java.math.BigDecimal; import java.math.RoundingMode; class BigDecimalDivideTest { public static void main(String[] args) { BigDecimal someValue = BigDecimal.valueOf(3215); BigDecimal BD_100 = BigDecimal.valueOf(1000); int SCALE_2 = 2; System.out.prin

                    JavaのBigDecimalの割り算の丸め処理をPythonに書き換える - Qiita
                  • Java : BigDecimal (正確な10進数) - API使用例 - プログラミングTIPS!

                    概要 変更が不可能な、任意精度の符号付き10進数です。 BigDecimalは、任意の精度整数「スケールなしの値」および32ビットの整数scaleで構成されます。 BigDecimal (Java SE 18 & JDK 18) BigDecimalクラスは、10進数としての正確な値を表現するクラスです。 プリミティブ型の double や float では誤差が発生する演算も、BigDecimalを使えば誤差なしで演算できます。 // 誤差が発生する例です。 final double d1 = 0.1; final double d2 = 0.2; final double d3 = d1 + d2; System.out.println(d1); // 0.1 System.out.println(d2); // 0.2 System.out.println(d3); // 0.300

                    • integer/float/rational/bigdecimalの何が違う? - Qiita

                      数値型のクラスには、integer/float/rational/bigdecimalがあります。 これらは全て数値型のクラスですが、次のような違いがあります。 クラス 説明

                        integer/float/rational/bigdecimalの何が違う? - Qiita
                      • JavaのBigDecimalをtoStringしたときに指数表記(E)が出ないようにする - Qiita

                        環境 Java 8 SpringBoot 1.5.10 Jackson Core 2.8.10 現象 BigDecimal型を使っているときにtoStringを呼ぶと指数表記(E)が出現することがあります。 手元の環境で試してみたところ、0.1からはじめて0.000001(10のマイナス6乗)まではそのままの形ですが、0.0000001(10のマイナス7乗)からは指数表記(E)が出現しました。 BigDecimal fieldA = new BigDecimal("0.000001"); // .toString()したら 0.000001 BigDecimal fieldB = new BigDecimal("0.0000001"); // .toString()したら 1E-7 指数表記(E)が出現する基準についてはBigDecimal.toStringのドキュメントに詳しく書いてあり

                          JavaのBigDecimalをtoStringしたときに指数表記(E)が出ないようにする - Qiita
                        • 【Java入門】BigDecimalを用いた計算、比較について | TaroTech

                          1.BigDecimalとはBigDecimalとは、Javaにおいて誤差が出ないように計算するためのクラスのことです。 特に小数などを扱う場合にdouble型やfloat型を用いると誤差が発生してしまう場合があるため、BigDecimalは小数計算などによく使われます。 例えば、 import java.math.BigDecimal; public class Training1 { public static void main(String[] args) { // BigDecimal型を用いない計算 System.out.println(1 - 0.9); // BigDecimal型の計算 BigDecimal decimal1 = new BigDecimal("1"); BigDecimal decimal2 = new BigDecimal("0.9"); System

                            【Java入門】BigDecimalを用いた計算、比較について | TaroTech
                          • 【Java入門】BigDecimalの大小をcompareToで比較する方法 | 侍エンジニアブログ

                            BigDecimalとは BigDecimalは小数点以下の値に誤差が出ないように正確に計算するために使います。BigDecimalを使わない場合にどのような誤差が出るのか、次のサンプルコードで確認してみましょう。 class Sample { public static void main (String[] args){ System.out.println(1.00 - 0.1 * 9); } } [実行結果] 0.09999999999999998 この実行結果から、「1 – 0.9」が「0.1」にならないことが確認できます。このサンプルコードをBigDecimalを使って書き換えると、次のようになります。 import java.math.BigDecimal; class Sample1 { public static void main (String[] args){ Bi

                              【Java入門】BigDecimalの大小をcompareToで比較する方法 | 侍エンジニアブログ
                            • BigDecimal型のデフォルト四捨五入を変更する方法 - Qiita

                              class Hoge < ApplicationRecord BigDecimal.mode(BigDecimal::ROUND_MODE, BigDecimal::ROUND_DOWN) belongs_to :foobar end flag = false # デフォルト値 f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag) f = BigDecimal::mode(BigDecimal:

                                BigDecimal型のデフォルト四捨五入を変更する方法 - Qiita
                              • Java : 小数を誤差なしで計算 (BigDecimal) - プログラミングTIPS!

                                正確な計算をしたいのに、double や float を使って誤差に悩まされたことはありませんでしょうか? そんなときには、BigDecimal クラスを使ってみましょう。 本記事では、 なぜ double や float は誤差が発生するのか? BigDecimalを使い 10進数 として正確に計算する の2つについて解説していきます。 概要 4.2.3. Floating-Point Types and Values The floating-point types are float and double, which are conceptually associated with the 32-bit binary32 and 64-bit binary64 floating-point formats for IEEE 754 values and operations, as

                                • Java9以降のBigDecimalで四則演算を行う方法 | フルスタックエンジニアライフ

                                  Javaで四則演算(足し算、引き算、掛け算、割り算)を行う際にはBigDecimalというクラスを使うのですが、Java9以降はBigDecimal.ROUND~関連が非推奨になったのでこれらを使わない方法を紹介していきます。

                                    Java9以降のBigDecimalで四則演算を行う方法 | フルスタックエンジニアライフ
                                  • Java BigDecimal チートシート - A Memorandum

                                    はじめに いろいろと注意点の多い BigDecimal は、使おうとすると、注意点があるということ以外忘れてる。 インスタンス生成は文字列から行うこと 比較は equals() でなく compareTo() を使うこと Java8 より前は stripTrailingZeros() のバグに注意すること Java1.5 以降では、丸めの指定は RoundingMode を使うこと インスタンス化 文字列からインスタンス化 BigDecimal val = new BigDecimal("0.1"); double からインスタンス化 BigDecimal val = BigDecimal.valueOf(0.1); 以下のようにしてはいけない。 BigDecimal val = new BigDecimal(0.1); 2の補数で正確に表現できないため以下のようになってしまう。 val.

                                      Java BigDecimal チートシート - A Memorandum
                                    • JavaでBigDecimalを使うときメモ

                                      // 文字列を渡す BigDecimal bBar = new BigDecimal("1000"); // BigDescimal.valueOfを使う BigDecimal bFoo = BigDecimal.valueOf(1000);

                                        JavaでBigDecimalを使うときメモ
                                      • �【Ruby】BigDecimalとDECIMAL - Qiita

                                        Help us understand the problem. What is going on with this article?

                                          �【Ruby】BigDecimalとDECIMAL - Qiita
                                        1