বিগডিসিমালের জন্য সংযোজন


155

আমি BigDecimalটাইপ করা কিছু মুদ্রার মান সহ কিছু সাধারণ অঙ্ক করতে চাই ।

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test.add(new BigDecimal(30));
System.out.println(test);
test.add(new BigDecimal(45));
System.out.println(test);

স্পষ্টতই আমি BigDecimalপাটিগণিত ভালভাবে বুঝতে পারি না , পিছনে আউটপুট দেখুন।

Test
0
0
0

যে কেউ আমাকে সাহায্য করতে পারেন?

উত্তর:


275

BigDecimalতাই আপনি এই যা করতে হবে অপরিবর্তনীয় হয়:

BigDecimal result = test.add(new BigDecimal(30));
System.out.println(result);

27
আমি বিভ্রান্তি বুঝতে পারি। যদিও এটি বলা হয়েছে যে বিগডিসিমাল অপরিবর্তনীয়, ডকুমেন্টেশন আরও ভাল হতে পারে। উদাহরণস্বরূপ, দস্তাবেজগুলি পদ্ধতির জন্য জানিয়েছে add(..): " এই বিগডিসিমালে যুক্ত হতে হবে" মান " তদুপরি, "..." ... "এর পরিবর্তে একটি নতুন বিগডিসিমাল ফিরিয়ে দেয় ..." বলে একটি সুন্দর স্পর্শ হবে। সম্ভবত আমি কেবল নিটপিকিং করছি, তবে আইএমএইচও এখানে উন্নতির জন্য জায়গা আছে :-)
পলুস 86

3
কেবল একটি পার্শ্ব নোট, বিগডিসিমাল স্ট্রিংয়ের মতো চূড়ান্ত না হওয়ার কারণে এটি সম্পূর্ণরূপে স্থাবর নয় ...
জাই

@ জাই তবে এটি কেবল একটি বাস্তবায়ন বাগ, ডিজাইনের মাধ্যমে নয়। রক্ষণাবেক্ষণযোগ্য কোডটি এটি ব্যবহার করা উচিত নয়।
ক্রিস জেস্টার-ইয়ং

1
এবং জাভা বাস্তবায়ন কেন কিছুটা অদ্ভুত ?! অন্যান্য অনেক ভাষায় কেবলমাত্র ডেটা সংখ্যার প্রকারের মধ্যেই + ব্যবহার করা হয়
সেপাহর

33

এখানে জাভা ডক্স থেকে দেখে মনে হচ্ছে এটি একটি নতুন বিগডিসিমাল প্রদান করে:

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);

16
BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);

11

এটি আসলে বরং সহজ। শুধু এটি করুন:

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);

আরো দেখুন: BigDecimal#add(java.math.BigDecimal)


আকর্ষণীয় যে আপনার উত্তরটি মরিস পেরির মতো। আপনি যদি লিঙ্কটি যুক্ত করতে চান তবে আপনার কেবল এটি সম্পাদনা করা উচিত ছিল।
forresthopkinsa

প্রকৃতপক্ষে, আমি এটি অনুলিপি করিনি তবে আমি মনে করি আমরা উভয় একই সময়ে একই উত্তর লিখেছিলেন (এটি কেবলমাত্র প্রদত্ত কোডের জন্য ঠিক ঠিক ঠিক করা হয়)। সঠিক লিঙ্কটি দেখার জন্য আমি মাত্র এক মিনিট সময় নিয়েছি।
এনফেকনার

বাহ, এটি বেশ আকর্ষণীয়!
forresthopkinsa


4
//you can do in this way...as BigDecimal is immutable so cant set values except in constructor

BigDecimal test = BigDecimal.ZERO;
BigDecimal result = test.add(new BigDecimal(30));
System.out.println(result);

result would be 30

3
BigDecimal no = new BigDecimal(10); //you can add like this also
no = no.add(new BigDecimal(10));
System.out.println(no);

20


2

আপনি এটি এর মতো করেও করতে পারেন:

BigDecimal A = new BigDecimal("10000000000");
BigDecimal B = new BigDecimal("20000000000");
BigDecimal C = new BigDecimal("30000000000");
BigDecimal resultSum = (A).add(B).add(C);
System.out.println("A+B+C= " + resultSum);

ছাপে:

এ + বি + সি = 60000000000


1

জাভা 8 ল্যাম্বডাস ব্যবহার করা

List<BigDecimal> items = Arrays.asList(a, b, c, .....);

items.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);

এটি এমন কেসগুলিকে কভার করে যেখানে তালিকার কিছু বা সমস্ত অবজেক্ট শূন্য রয়েছে।


0
BigDecimal demo = new BigDecimal(15);

এটি অপরিবর্তনীয় বোকাস যা এটি অভ্যন্তরীণভাবে আপনার ইনপুট অর্থাৎ (15) final private final BigInteger intVal; এবং একই ধারণা ব্যবহার করে স্ট্রিং তৈরির সময় প্রতিটি ইনপুট অবশেষে সংরক্ষণ করে private final char value[];S


0

যুক্ত করার জন্য আরও একটি উদাহরণ BigDecimals। মূল বিষয়টি হ'ল এগুলি অপরিবর্তনীয় এবং এগুলি কেবলমাত্র নির্মাণকারীতে শুরু করা যেতে পারে। কোডটি এখানে:

import java.util.*;
import java.math.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc;
        boolean first_right_number = false;
        BigDecimal initBigDecimal = BigDecimal.ZERO;
        BigDecimal add1 = BigDecimal.ZERO;
        BigDecimal add2 = BigDecimal.ZERO;

        while (!first_right_number)
        {
            System.out.print("Enter a first single numeric value: ");
            sc = new Scanner(System.in);
            if (sc.hasNextBigDecimal()) 
            {
                first_right_number = true;
                add1 = sc.nextBigDecimal();
            }
        }

        boolean second_right_number = false;
        while (!second_right_number)
        {
            System.out.print("Enter a second single numeric value: ");
            sc = new Scanner(System.in);
            if (sc.hasNextBigDecimal()) 
            {
                second_right_number = true;
                add2 = sc.nextBigDecimal();
            }
        }
        BigDecimal result = initBigDecimal.add(add1).add(add2);
        System.out.println("Sum of the 2 numbers is: " + result.toString());
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.