
佐藤と申します。
いつも拝見させて頂き、参考にさせて頂いております。
小数点について質問させて頂きます。
単価と数量、割引率を入力とし、収益率と合計金額を算出しようと思っております。
合計金額はごく普通の計算式で問題ありませんでしたが、収益率を小数点第2位(以降切捨て)で算出出来ておりません。
自分なりに色々と調べ、BigDecimalを使えば小数点を表示する事が出来るとの事ですが、計算式では使用することが出来ませんでした。
計算結果を小数点以下で表示することは可能でしょうか?
分かる方がいらっしゃれば、是非ご教授下さい。
宜しくお願い致します。
import java.io.*; //入力ストリームクラスのインポート定義
import java.math.BigDecimal;
public class kadai12{
public static void main(String args[]) throws IOException{
//キーボードからの入力等
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
//入力データバッファの定義&代入
String check;
char w0;
int w1=0;
int w2=0;
int w3=0;
int num;
//System.out.print("1");
//読込チェック=NULLならば処理を終了させる
while(((check = buf.readLine())!=null)){
char[] src = check.toCharArray();
String[] work = check.split(",");
int a=0;
//入力ファイルチェック1
try{
num=Integer.parseInt(work[1]);
}catch(Exception e){
System.out.print("2桁目が数値ではありません");
return;
}
//入力ファイルチェック2
try{
num=Integer.parseInt(work[2]);
}catch(Exception e){
System.out.print("3桁目が数値ではありません");
return;
}
//入力ファイルチェック3
try{
num=Integer.parseInt(work[3]);
}catch(Exception e){
System.out.print("4桁目が数値ではありません");
return;
}
//w0=名称 w1=単価 w2=数量 w3=割引率
w0=src[0];
w1=Integer.parseInt(work[1]);
w2=Integer.parseInt(work[2]);
w3=Integer.parseInt(work[3]);
//合計金額算出
n=0;
n=w1*w2;
//収益率算出
BigDecimal n2=new BigDecimal("0.00");
n2=n*w3/n;
System.out.println(check);
System.out.println(n2 + "=" + n + "*" + w3 + "/" + n);
System.out.println(n + "=" + w1 + "*" + w2);
}
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
質問の意図と違うかもしれないですが、
2つの数値を割って小数第二位まで表示、それ以降を切り捨てする方法です。
ExcelやAccessなどでよく使われる考え方です。
double dividend = 9; //割られる数
double divisor = 7; //割る数
double d = dividend / divisor; // 9/7 = 1.2857…
double d2 = (d * 100); //1.2857…*100 = 128.57…
int i = (int)d2; // (int)128.57… → 128
double ans = i / 100.00; // 128 / 100.00 = 1.28
doubleをintにキャストすると、小数部分が切り捨てられます。
これを利用すれば、切捨ては簡単に可能です。
ただ、今回は小数第二位までは残さないといけないので、最初に100倍しておきます。
これにより、小数第二位までが整数に桁上げされます。
その後でintへキャストし、小数部分(元は小数第三位以下)を切り捨てます。
後は、100.00で割って桁上げを元に戻します。
計算部分をまとめると、
double dividend, divisor;
double ans = (int)(dividend / divisor * 100) / 100.00;
という風に書けます。
こんな感じです。
あまり細かい検証はしていないので、違ってたらすみません。
あと、このやり方は負の数が入ると厳密には正しくなくなります。
(もう一つ、二つくらい工夫が必要です)
金額計算ということで、正の数を限定したやり方です。
neko_nokoさん、ご回答をありがとうございます。
私の求めていた答えが正にそれです。
neko_nokoさんに記述して頂いた通りにPGMを作り変えたら上手く行きました。
丁寧なご回答、誠に感謝致します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0dの意味を教えてください
-
自然対数の底Eを含むStringの数...
-
最大値と最小値の求め方
-
実数からの小数部の取得
-
JSPやサーブレットでSystem.out...
-
動的配列が存在(要素が有る)か...
-
ループ処理の際、最後だけ","を...
-
System.err. printlnとSystem.o...
-
Java配列でNullPointerExceptio...
-
ORA-01858: 数値を指定する箇所...
-
EXCEL VBA で、0から?1から?
-
JSPでの計算結果表示
-
javaで質問です。 文字列2023/2...
-
javascriptで文字列のsjis利用...
-
テキストファイルから空白行をよむ
-
[JAVA]try 内の変数を外で!?
-
IF関数でEmpty値を設定する方法。
-
Path型をString型へ変換する(Java)
-
配列にnullを代入すると、null...
-
[Ljava.lang.Stringってなんですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0dの意味を教えてください
-
実数からの小数部の取得
-
べき乗
-
double型変数値の整数部分のみ...
-
Javaで何パーセント%かを表示...
-
double型の足し算について
-
JAVAのプログラムで、2乗計算...
-
99.98+0.01の誤差
-
LU分解を利用した逆行列のプロ...
-
printfでのエラーがわからない...
-
プログラムのおかしいところを...
-
モンテカルロ法を用いた球の体...
-
このソースコードの意味
-
javaの課題。。
-
javaでC++のdefine文に相当する...
-
最大値と最小値の求め方
-
四捨五入をするメソッドを実装...
-
Javaコンパイルエラー
-
このプログラムを直してください。
-
Javaのeval関数処理
おすすめ情報