ভাসমান পয়েন্টের ক্ষতিগুলি এড়াতে প্রোগ্রামিং ভাষাগুলিতে কী করা যেতে পারে?


28

ভাসমান পয়েন্ট গণিত এবং এর সংক্ষিপ্ত কমিংয়ের ভুল বোঝাবুঝি প্রোগ্রামিংয়ে আশ্চর্য এবং বিভ্রান্তির একটি প্রধান কারণ (স্ট্যাক ওভারফ্লোতে "সংখ্যার সাথে" সঠিকভাবে যোগ না করা "সম্পর্কিত প্রশ্নগুলির সংখ্যা বিবেচনা করুন)। অনেক প্রোগ্রামার এর প্রভাবগুলি এখনও বুঝতে না পারার বিষয়টি বিবেচনা করে এর অনেকগুলি সূক্ষ্ম বাগ (বিশেষত আর্থিক সফটওয়্যারটিতে) প্রবর্তনের সম্ভাবনা রয়েছে। কি প্রোগ্রামিং ভাষায় এখনও তার গতি প্রস্তাব যখন সঠিকতা ঐ যে সঙ্কটপূর্ণ নয়, ঐ যে ধারণার সঙ্গে অপরিচিত তাদের জন্য তার ফাঁদ এড়াতে আপনাকে কি করতে কি ধারণা বুঝতে পেরেছ?


26
ভাসমান-পয়েন্ট প্রক্রিয়াজাতকরণের সমস্যাগুলি এড়াতে কেবল প্রোগ্রামিং ভাষাই করতে পারে তা হ'ল এটি নিষিদ্ধ করা। নোট করুন যে এটিতে বেস -10 ভাসমান-পয়েন্টও অন্তর্ভুক্ত রয়েছে, যা সাধারণভাবে ঠিক ততটা ভুল, ব্যতীত আর্থিক অ্যাপ্লিকেশনগুলি এর সাথে প্রাক-অভিযোজিত হয়।
ডেভিড থর্নলি

4
"সংখ্যার বিশ্লেষণ" এর জন্য এটি। কীভাবে নির্ভুল ক্ষতি হ্রাস করতে হয় তা শিখুন - ওরফে ভাসমান বিন্দুগুলি।

ভাসমান পয়েন্ট ইস্যুটির একটি ভাল উদাহরণ: স্ট্যাকওভারফ্লো.com
অস্টিন হেনলি

উত্তর:


47

আপনি বলেছেন "বিশেষত আর্থিক সফটওয়্যার" এর জন্য, যা আমার পোষা প্রাণীর একটি চাওয়াকে সামনে নিয়ে আসে: অর্থ কোনও ভাসা নয়, এটি একটি অন্তর্নিহিত

অবশ্যই, এটি একটি ভাসমান মত দেখাচ্ছে। এটি একটি দশমিক পয়েন্ট আছে। তবে এটি কেবল কারণ আপনি ইউনিটগুলিকে ব্যবহার করেছেন যা সমস্যাটিকে বিভ্রান্ত করে। অর্থ সর্বদা পূর্ণসংখ্যার পরিমাণে আসে। আমেরিকাতে, এটি সেন্ট। (নির্দিষ্ট প্রসঙ্গে আমি মনে করি এটি মিলগুলি হতে পারে তবে আপাতত তা উপেক্ষা করুন।)

সুতরাং আপনি যখন $ 1.23 বলছেন, এটি সত্যই 123 সেন্ট। সর্বদা, সর্বদা, সর্বদা এই পদগুলিতে আপনার গণিত করুন এবং আপনি ভাল থাকবেন। আরও তথ্যের জন্য, দেখুন:

প্রশ্নের সরাসরি জবাব দেওয়া, প্রোগ্রামিং ভাষাগুলিতে কেবল অর্থের প্রকারকে যুক্তিসঙ্গত আদিম হিসাবে অন্তর্ভুক্ত করা উচিত।

হালনাগাদ

ঠিক আছে, আমার কেবল তিনবারের চেয়ে দু'বার "সবসময়" বলা উচিত ছিল। অর্থ সত্যই সর্বদা একটি আন্ত; যাঁরা অন্যথায় ভাবেন তারা আমাকে 0.3 সেন্ট করে প্রেরণ এবং আপনার ব্যাঙ্কের বিবৃতিতে ফলাফল আমাকে দেখানোর জন্য স্বাগত। কমেন্টাররা হিসাবে উল্লেখ করেছেন, যখন আপনাকে অর্থের মতো সংখ্যায় ভাসমান পয়েন্ট গণিত করার দরকার হয় তখন বিরল ব্যতিক্রম হয়। উদাহরণস্বরূপ, নির্দিষ্ট ধরণের দাম বা সুদের গণনা। তারপরেও সেগুলি ব্যতিক্রমের মতো আচরণ করা উচিত। অর্থ আসে এবং পূর্ণসংখ্যার পরিমাণ হিসাবে বেরিয়ে যায়, সুতরাং আপনার সিস্টেমটি যত কাছাকাছি চলে আসে ততই স্যানার হবে er


20
@ জোয়েলফ্যান: আপনি প্ল্যাটফর্ম নির্দিষ্ট প্রয়োগের জন্য একটি ধারণা ভুল করছেন।
হোয়াটসাইম

12
এটি বেশ সহজ নয়। অন্যদের মধ্যে সুদের গণনাগুলি ভগ্নাংশ সেন্ট তৈরি করে এবং নির্দিষ্ট পদ্ধতি অনুসারে কোনও সময়ে গোল করতে হয়।
কেভিন ক্লাইনে

24
কাল্পনিক -১, যেহেতু আমার ডাউনভোটের জন্য প্রতিনিধিত্বের অভাব আছে :) ... আপনার ওয়ালেটে যা আছে তার জন্য এটি সঠিক হতে পারে তবে অ্যাকাউন্টিংয়ের প্রচুর পরিস্থিতি রয়েছে যেখানে আপনি দশ ভাগের দশক বা ছোট ভগ্নাংশের সাথে ভালভাবে আচরণ করতে পারেন। Decimalএটি মোকাবেলায় একমাত্র বুদ্ধিমান সিস্টেম এবং আপনার মন্তব্যটি "এখনই তা উপেক্ষা করুন " সর্বত্র প্রোগ্রামারদের জন্য
দোয়ার আশ্রয়কেন্দ্র

9
@ কেভিন ক্লাইন: গণনাগুলিতে ভগ্নাংশের সেন্ট রয়েছে তবে কীভাবে এটি পরিচালনা করতে হবে সে সম্পর্কে সম্মেলন রয়েছে। আর্থিক গণনার জন্য লক্ষ্য গাণিতিক নির্ভুলতা নয়, তবে ঠিক একই ফলাফল অর্জন করা যা কোনও ক্যালকুলেটর সহ একজন ব্যাংকার করতেন।
ডেভিড থর্নলি

6
"পূর্ণসংখ্যা" শব্দের প্রতি "যুক্তিযুক্ত" দিয়ে প্রতিস্থাপন করে সবকিছুই নিখুঁত হবে -
এমিলিও গারাভাগলিয়া

15

দশমিক ধরণের জন্য সহায়তা প্রদান অনেক ক্ষেত্রে সহায়তা করে। অনেক ভাষায় দশমিক প্রকার থাকে তবে সেগুলি আওতায় পড়ে।

আসল সংখ্যার উপস্থাপনের সাথে কাজ করার সময় ঘটে যাওয়া অনুমানের বিষয়টি বোঝা গুরুত্বপূর্ণ। দশমিক এবং ভাসমান পয়েন্ট উভয় প্রকারের ব্যবহার 9 * (1/9) != 1সঠিক বিবৃতি। যখন ধ্রুবক একটি অপ্টিমাইজার গণনাটি অনুকূল করতে পারে যাতে এটি সঠিক।

একটি আনুমানিক অপারেটর সরবরাহ করা সাহায্য করবে। তবে এ জাতীয় তুলনা সমস্যাযুক্ত। নোট করুন .9999 ট্রিলিয়ন ডলার প্রায় 1 ট্রিলিয়ন ডলার সমান। আপনি দয়া করে আমার ব্যাংক অ্যাকাউন্টে পার্থক্য জমা দিতে পারেন?


2
0.9999...ট্রিলিয়ন ডলার আসলে 1 ট্রিলিয়ন ডলারের সমান পরিমাণে।
আমার সঠিক মতামতটি

5
@ জাস্ট: হ্যাঁ তবে আমি এমন কোনও কম্পিউটারের মুখোমুখি হই নি যেগুলি রেজিস্টারগুলি ধারণ করে 0.99999...। তারা সকলেই কোনও এক সময়ে অসম্পূর্ণতার ফলে কাটা হয় un 0.9999প্রকৌশল জন্য যথেষ্ট সমান। আর্থিক উদ্দেশ্যে এটি না।
বিলথোর

2
কিন্তু কোন ধরণের সিস্টেম ট্রিলিয়ন ডলারের ডলারের পরিবর্তে বেস ইউনিট হিসাবে ব্যবহার করেছিল?
ব্র্যাড

@ ব্র্যাড আপনার ক্যালকুলেটরটিতে (1 ট্রিলিয়ন / 3) * 3 গণনার চেষ্টা করুন। কী মূল্য পাবে?
বিলথোর

8

যখন আমি বিশ্ববিদ্যালয়ে পড়ি তখন কম্পিউটার বিজ্ঞানের প্রথম বক্তৃতায় (সোফমোর) বক্তৃতা কী করা উচিত তা আমাদের জানানো হয়েছিল, (বেশিরভাগ বিজ্ঞান কোর্সের পাশাপাশি এই কোর্সটিও পূর্বশর্ত ছিল)

আমি প্রভাষককে স্মরণ করিয়ে দিয়েছিলাম "ভাসমান পয়েন্ট সংখ্যাগুলি আনুমানিকতা money অর্থের জন্য পূর্ণসংখ্যার প্রকার ব্যবহার করুন accurate নির্ভুল গণনার জন্য বিসিডি নম্বর সহ ফরটারান বা অন্য ভাষা ব্যবহার করুন।" (এবং তারপরে তিনি বাইনারি ফ্লোটিং পয়েন্টে সঠিকভাবে উপস্থাপন করা অসম্ভব 0.2 এর ক্লাসিক উদাহরণটি ব্যবহার করে অনুমানের দিকে নির্দেশ করেছেন)। পরীক্ষাগার মহড়ার ক্ষেত্রেও এই সপ্তাহটি পরিণত হয়েছিল।

একই বক্তৃতা: "যদি আপনার অবশ্যই ভাসমান পয়েন্ট থেকে আরও নির্ভুলতা পাওয়া যায় তবে আপনার শর্তাবলী বাছাই করুন small যে আমার মনে আটকে।

কয়েক বছর আগে আমার একটি কিছু গোলাকার জ্যামিতি ছিল যা খুব নির্ভুল হওয়া দরকার এবং এখনও দ্রুত। পিসিতে ৮০ বিট ডাবল এটি কাটছিল না, তাই আমি প্রোগ্রামে কিছু প্রকার যুক্ত করেছি যা পরিবহণমূলক ক্রিয়াকলাপ সম্পাদনের আগে শর্তাদি বাছাই করে। সমস্যা সমাধান.

গিটারের গুণমান সম্পর্কে অভিযোগ করার আগে বাজাতে শিখুন।

আমার এক সহকর্মী ছিল চার বছর আগে যিনি জেপিএল-এর পক্ষে কাজ করতেন। তিনি অবিশ্বাস প্রকাশ করেছিলেন যে আমরা কিছু কিছু জন্য ফোরট্রান ব্যবহার করেছি। (অফলাইনে গণনা করা আমাদের খুব নির্ভুল সংখ্যাসূচক সিমুলেশনগুলির দরকার ছিল।) তিনি গর্বের সাথে বললেন, "আমরা সেই সমস্ত ফরটারানকে সি ++ দিয়ে প্রতিস্থাপন করেছি।" আমি কেন ভাবছিলাম যে তারা কোনও গ্রহকে মিস করল।


2
সঠিক কাজের জন্য সঠিক সরঞ্জামটি +1 করুন। যদিও আমি আসলে ফরটারন ব্যবহার করি না। কৃতজ্ঞতাজনকভাবে আমি কাজ করে আমাদের আর্থিক ব্যবস্থা নিয়ে কাজ করি না।
জেমস খুরি

"যদি আপনার অবশ্যই ভাসমান পয়েন্ট থেকে আরও নির্ভুলতা পাওয়া যায় তবে আপনার শর্তাবলী বাছাই করুন big এটির কোনও নমুনা?
ম্যাক্সেক্স 21

@ এমএএমসিএক্স একটি দশমিক ভাসমান পয়েন্ট সংখ্যাটি কল্পনা করুন যার কেবলমাত্র এক অঙ্ক রয়েছে। প্রতিটি মধ্যবর্তী ফলাফলটি বৃত্তাকার হিসাবে গণনা 1.0 + 0.1 + ... + 0.1(10 বার পুনরাবৃত্তি) ফিরে আসে 1.0। এটি অন্যান্য উপায় বৃত্তাকার করছেন, আপনি অন্তর্বর্তী ফলাফল পেতে 0.2, 0.3, ..., 1.0এবং পরিশেষে 2.0। এটি একটি চূড়ান্ত উদাহরণ, তবে বাস্তবের ভাসমান পয়েন্ট সংখ্যাগুলির সাথে একই রকম সমস্যা দেখা দেয়। বেস ধারণাটি হ'ল আকারে অনুরূপ সংখ্যা যুক্ত করা ক্ষুদ্রতম ত্রুটির দিকে পরিচালিত করে। ক্ষুদ্রতম সংখ্যার সাথে শুরু করুন কারণ তাদের যোগফল বড় এবং সেইজন্য আরও বড় সংখ্যার সাথে যুক্ত হওয়ার জন্য আরও উপযুক্ত।
মার্টিনাস

ফোর্টরান এবং সি ++ এ ভাসমান পয়েন্ট স্টাফ বেশিরভাগই অভিন্ন হতে চলেছে। উভয় সঠিক এবং অফলাইনে আছেন, এবং আমি নিশ্চিত ফোরট্রান কোন নেটিভ স্কুবা BCD reals হয়েছে আছি ...
মার্ক

8

সতর্কতা: ভাসমান-পয়েন্ট টাইপ সিস্টেম.ডুবলে সরাসরি সমতা পরীক্ষার জন্য নির্ভুলতার অভাব রয়েছে।

double x = CalculateX();
if (x == 0.1)
{
    // ............
}

আমি বিশ্বাস করি না কোন ভাষা স্তরে কিছু করা বা করা উচিত।


1
আমি একটি দীর্ঘ সময় ভাসা বা ডাবল ব্যবহার করিনি, তাই আমি কৌতূহলী। এটি কি প্রকৃত বিদ্যমান সংকলক সতর্কতা, বা আপনি দেখতে চান এমন একটি?
কার্ল বিলেফেল্ট

1
@ কার্ল - ব্যক্তিগতভাবে আমি এটি দেখিনি বা এটির প্রয়োজন নেই তবে আমি ধারণা করি এটি উত্সর্গীকৃত তবে সবুজ বিকাশকারীদের পক্ষে কার্যকর হতে পারে।
কেওসপ্যান্ডিয়ন

1
বাইনারি ভাসমান পয়েন্টের ধরনগুলি Decimalসমতা পরীক্ষার ক্ষেত্রে তুলনামূলকভাবে আরও ভাল বা খারাপ হয় না । মধ্যে পার্থক্য হতে পারে 1.0m/7.0m*7.0mএবং এর মধ্যে পার্থক্যের 1.0mচেয়ে কম পরিমাণের অনেকগুলি আদেশ হতে পারে 1.0/7.0*7.0তবে এটি শূন্য নয়।
সুপারক্যাট

1
@ পেট্রিক - আপনি কী পাচ্ছেন তা আমি নিশ্চিত নই। কোনও কিছুর ক্ষেত্রে সত্য হওয়া এবং সমস্ত ক্ষেত্রে সত্য হওয়ার মধ্যে বিশাল পার্থক্য রয়েছে।
কেওসপ্যান্ডিয়ন

1
@ চাওসপ্যান্ডিয়ন এই পোস্টের উদাহরণের সাথে সমস্যাটি সমতা-তুলনা নয়, এটি ভাসমান-পয়েন্ট আক্ষরিক। সঠিক মান 1.0 / 10 সহ কোনও ভাসা নেই। মান্টিসার মধ্যে উপযুক্ত পূর্ণসংখ্যার সংখ্যার সাথে গণনা করার সময় ভাসমান পয়েন্ট গণিতের ফলাফল 100% নির্ভুল ফলাফলে আসে।
প্যাট্রিক 20

7

ডিফল্টরূপে, ভাষাগুলি অ-পূর্ণসংখ্যার সংখ্যাগুলির জন্য নির্বিচারে-নির্ভুলতা যুক্তি ব্যবহার করা উচিত use

যাদের অপ্টিমাইজ করা দরকার তারা সর্বদা ভাসমানদের জন্য জিজ্ঞাসা করতে পারেন। এগুলি সি এবং অন্যান্য সিস্টেম প্রোগ্রামিং ভাষাগুলিতে ডিফল্ট অর্থে হিসাবে ব্যবহার করা, তবে বর্তমানে বেশিরভাগ ভাষায় জনপ্রিয় নয়।


1
আপনি কীভাবে অযৌক্তিক সংখ্যার সাথে ডিল করবেন?
dsimcha

3
আপনি এটি একইভাবে করেন ভাসমানগুলির সাথে: সমীকরণ।
ওয়াওউ

1
আমাকে বলতে হবে আমার মনে হয় এটি অনেক অর্থবোধ করে, বেশিরভাগ লোক যাদের সঠিক সংখ্যার প্রয়োজন হয় তাদের যুক্তির প্রয়োজন হয় না যুক্তিযুক্ত (বিজ্ঞান এবং প্রকৌশল অরন্যালেন্স ব্যবহার করতে পারে তবে আপনি আবার আনুমানিক রাজ্যে ফিরে এসেছেন, বা আপনি কিছু বেশ দক্ষ বিশেষজ্ঞ গণিত করছেন)
জে কে।

1
অবাধ-স্পষ্টতা rationals সঙ্গে কম্পিউটেশন প্রায়ই ধীর মাত্রার আদেশ (সম্ভবত ধীর বহু মাত্রায়) একটি হার্ডওয়্যার-সমর্থিত সঙ্গে কম্পিউটেশন চেয়ে থাকবে double। যদি মিলিয়ন প্রতি এক অংশের জন্য গণনাটি নির্ভুল হওয়া দরকার, তবে একটি মাইক্রোসেকেন্ডকে কয়েক বিলিয়নের মধ্যে কয়েক অংশের মধ্যে কম্পিউটিং ব্যয় করা ভাল, একটি দ্বিতীয় কম্পিউটিং একেবারে সুনির্দিষ্টভাবে ব্যয় করার চেয়ে বেশি।
সুপারক্যাট

5
@ সুপের্যাট: আপনি যা পরামর্শ দিচ্ছেন তা হ'ল অকাল অপটিমাইজেশনের পোস্টার চাইল্ড। বর্তমান পরিস্থিতিটি হ'ল দ্রুত গণিতের জন্য বিশাল সংখ্যক প্রোগ্রামারদের কোনও প্রয়োজন নেই এবং তারপরে ভাসমান-পয়েন্ট (ভুল) আচরণটি বোঝার জন্য কঠোরভাবে দংশিত হন, যাতে দ্রুত গণিতের তুলনায় অপেক্ষাকৃত ক্ষুদ্র সংখ্যক প্রোগ্রামার এটি না পেয়েই পায় একটি অতিরিক্ত অতিরিক্ত অক্ষর টাইপ করতে। সত্তরের দশকে এটি বোঝা গেল, এখন এটি কেবল বাজে কথা। ডিফল্টটি নিরাপদ হওয়া উচিত। যাদের দ্রুত প্রয়োজন তাদের এটি চাইতে হবে।
ওয়াকো

4

ভাসমান পয়েন্ট সংখ্যা জড়িত দুটি বৃহত্তম সমস্যা হ'ল:

  • গণনাগুলিতে বেমানান ইউনিটগুলি প্রয়োগ করা হয়েছে (দ্রষ্টব্য এটি একইভাবে পূর্ণসংখ্যার গাণিতিককেও প্রভাবিত করে)
  • এফপি নম্বরগুলি একটি অনুমান এবং এটি কীভাবে বুদ্ধিমানের সাথে বৃত্তাকারকে মোকাবেলা করতে হয় তা বুঝতে ব্যর্থ ।

প্রথম ধরণের ব্যর্থতা কেবলমাত্র একটি যৌগিক প্রকার প্রদানের মাধ্যমে প্রতিকার করা যেতে পারে যার মধ্যে মান এবং ইউনিট সম্পর্কিত তথ্য রয়েছে। উদাহরণস্বরূপ, একটি lengthবা areaমান যা ইউনিটকে অন্তর্ভুক্ত করে (যথাক্রমে মিটার বা বর্গ মিটার বা ফুট এবং বর্গ ফুট)। অন্যথায় আপনাকে সর্বদা পরিমাপের এক ধরণের ইউনিটের সাথে কাজ করা এবং কেবলমাত্র যখন অন্যের সাথে উত্তরটি ভাগ করি তখনই অন্যটিতে রূপান্তরিত করার বিষয়ে পরিশ্রমী হতে হবে।

দ্বিতীয় ধরণের ব্যর্থতা একটি ধারণাগত ব্যর্থতা। ব্যর্থতাগুলি তখন প্রকাশ পায় যখন লোকেরা তাদেরকে পরম সংখ্যা হিসাবে মনে করে । এটি সাম্যতা ক্রিয়াকলাপগুলি, ক্রমগত গোলাকৃতি ত্রুটিগুলি ইত্যাদিকে প্রভাবিত করে example উদাহরণস্বরূপ, এটি সঠিক হতে পারে যে একটি সিস্টেমের জন্য দুটি পরিমাপ ত্রুটির একটি নির্দিষ্ট ব্যবধানের মধ্যে সমান। অর্থাত্ .৯৯৯ এবং ১.০০১ মোটামুটি 1.0 এর সমান হয় যখন আপনি +/- .1 এর চেয়ে কম পার্থক্য সম্পর্কে চিন্তা করেন না। যাইহোক, সমস্ত সিস্টেমের যে ক্ষুদ্র হয় না।

যদি কোনও ভাষা স্তরের সুবিধা প্রয়োজন হয় তবে আমি এটিকে সাম্যতার যথাযথতা বলব । NUnit, JUnit এবং অনুরূপভাবে নির্মিত টেস্টিং ফ্রেমওয়ার্কগুলিতে আপনি সঠিক হিসাবে বিবেচিত যথাযথতা নিয়ন্ত্রণ করতে পারেন। উদাহরণ স্বরূপ:

Assert.That(.999, Is.EqualTo(1.001).Within(10).Percent);
// -- or --
Assert.That(.999, Is.EqualTo(1.001).Within(.1));

যদি, উদাহরণস্বরূপ, সি # বা জাভা কোনও যথার্থ অপারেটর অন্তর্ভুক্ত করার জন্য পরিবর্তিত হয় তবে এটি দেখতে এরকম কিছু দেখাতে পারে:

if(.999 == 1.001 within .1) { /* do something */ }

তবে, যদি আপনি এর মতো কোনও বৈশিষ্ট্য সরবরাহ করেন তবে আপনাকে সেই ক্ষেত্রেও বিবেচনা করতে হবে যেখানে +/- পক্ষগুলি সমান না হলে সাম্যতা ভাল। উদাহরণস্বরূপ, + 1 / -10 দুটি সংখ্যাকে সমতুল্য বিবেচনা করবে যদি তাদের মধ্যে 1 টি আরও 1 এর মধ্যে বা প্রথম সংখ্যার চেয়ে 10 কম থাকে। এই কেসটি হ্যান্ডেল করতে আপনার একটি rangeকীওয়ার্ডও যুক্ত করতে হতে পারে :

if(.999 == 1.001 within range(.001, -.1)) { /* do something */ }

2
আমি অর্ডারটি স্যুইচ করব ধারণাগত সমস্যাটি বিস্তৃত। ইউনিট রূপান্তর ইস্যু তুলনা করে তুলনামূলকভাবে সামান্য।
এস .লট

আমি যথার্থ অপারেটরের ধারণাটি পছন্দ করি তবে আপনি এর উপরে আরও উল্লেখ করার সাথে অবশ্যই ভালভাবে চিন্তা করা দরকার। ব্যক্তিগতভাবে আমি এটিকে এর নিজস্ব সম্পূর্ণ সিনট্যাক্টিকাল নির্মাণ হিসাবে দেখতে আরও ঝুঁকতে চাই।
কেওসপ্যান্ডিয়ন

এটি খুব সহজেই একটি লাইব্রেরিতে করা যেতে পারে।
মাইকেল কে

1
@ ডান04: আমি "সমস্ত গণনা এক শতাংশের মধ্যে নির্ভুল" বা এর মতো আরও বিবেচনা করছিলাম। আমি টার-পিট দেখেছি যা পরিমাপের ব্যবস্থাপনার একক এবং আমি খুব দূরে থাকি।
TMN

1
প্রায় 25 বছর আগে, আমি একটি সংখ্যাসূচক প্যাকেজটি দেখেছিলাম যাতে একটি সংখ্যার প্যাকেজটিতে একটি জোড়ের ভাসমান-পয়েন্ট সংখ্যক সমন্বিত থাকে যা একটি পরিমাণের জন্য সর্বাধিক এবং সর্বনিম্ন সম্ভাব্য মানের প্রতিনিধিত্ব করে। সংখ্যাগুলি গণনার মধ্য দিয়ে যাওয়ার সাথে সাথে সর্বোচ্চ এবং সর্বনিম্নের মধ্যে পার্থক্য বাড়তে থাকবে। কার্যকরভাবে, এটি গণনার মানটিতে প্রকৃত নির্ভুলতা কত ছিল তা জানার একটি উপায় সরবরাহ করেছিল।
সুপারক্যাট

3

প্রোগ্রামিং ভাষা কি করতে পারে? এই প্রশ্নের একটি উত্তর আছে কিনা তা জানেন না, কারণ তার জীবনকে সহজতর করার জন্য প্রোগ্রামারটির পক্ষ থেকে সংকলক / দোভাষী যে কোনও কিছুই করেন সাধারণত সম্পাদন, স্পষ্টতা এবং পঠনযোগ্যতার বিরুদ্ধে কাজ করে। আমি মনে করি সি ++ উপায় (কেবলমাত্র আপনার যা প্রয়োজন তার জন্য অর্থ প্রদান করুন) এবং পার্ল উপায় (অন্তত বিস্ময়ের নীতি) উভয়ই বৈধ, তবে এটি প্রয়োগের উপর নির্ভর করে।

প্রোগ্রামারদের এখনও ভাষা নিয়ে কাজ করা এবং এটি কীভাবে ভাসমান পয়েন্টগুলি পরিচালনা করে তা বুঝতে হবে, কারণ যদি তা না করে তবে তারা অনুমান করে নেবে এবং একদিন অনিচ্ছাকৃত আচরণ তাদের অনুমানের সাথে মেলে না।

প্রোগ্রামারকে যা জানা দরকার তা আমার গ্রহণ:

  • সিস্টেমে এবং ভাষায় কি ভাসমান পয়েন্টের প্রকারগুলি উপলভ্য
  • কি ধরণের প্রয়োজন হয়
  • কোডে কী প্রকারের প্রয়োজনের উদ্দেশ্যগুলি কীভাবে প্রকাশ করা যায়
  • যথার্থতা বজায় রাখার সময় স্বচ্ছতা এবং দক্ষতার ভারসাম্য রক্ষার জন্য কোনও স্বয়ংক্রিয় প্রকারের প্রচারের কীভাবে সঠিকভাবে নেওয়া যায়

3

প্রোগ্রামিং ভাষাগুলি [ভাসমান পয়েন্ট] সমস্যাগুলি এড়াতে কী করতে পারে ...?

বুদ্ধিমান ডিফল্ট ব্যবহার করুন, যেমন ডেসিমিলগুলির জন্য অন্তর্নির্মিত সমর্থন।

গ্রোভি এটি বেশ সুন্দরভাবে করেছেন, যদিও কিছুটা চেষ্টা করে আপনি এখনও ভাসমান পয়েন্ট অবজ্ঞান প্রবর্তনের জন্য কোড লিখতে পারেন।


3

আমি সম্মত হই যে ভাষা স্তরে কিছুই করার নেই। প্রোগ্রামারদের অবশ্যই বুঝতে হবে যে কম্পিউটারগুলি বিচ্ছিন্ন এবং সীমাবদ্ধ, এবং তাদের মধ্যে উপস্থিত গাণিতিক ধারণাগুলির মধ্যে কেবলমাত্র আনুমানিকই।

ভাসমান বিন্দু মনে করবেন না। একটি বুঝতে হবে যে বিট নিদর্শনগুলির অর্ধেকটি নেতিবাচক সংখ্যার জন্য ব্যবহৃত হয় এবং পূর্ণসংখ্যার গাণিতিকের সাথে সম্পর্কিত সমস্যাগুলি এড়াতে 2 ^ 64 আসলে খুব ছোট।


দ্বিমত, বর্তমানে বেশিরভাগ ভাষা বাইনারি ভাসমান পয়েন্টের ধরণের জন্য (কেন == এমনকি ভাসমানগুলির জন্যও সংজ্ঞায়িত?) এবং যুক্তি বা দশমিকের জন্য পর্যাপ্ত সমর্থন নয়
জে.কে.

@ জে কে: এমনকি যদি কোনও গণনার ফলাফল অন্য কোনও গণনার ফলাফলের সমান গ্যারান্টিযুক্ত নাও হয় তবে সাম্যের তুলনা এখনও সেই ক্ষেত্রে কার্যকর হবে যেখানে একই মান দুটি ভেরিয়েবলকে অর্পণ করা হয় (যদিও সমান বিধিগুলি সাধারণত প্রয়োগ করা হয় সম্ভবত খুব আলগা, যেহেতু x== yবোঝা যাচ্ছে না যে কোনও গণনা xসম্পাদন করলে একই গণনা সম্পাদন করার ক্ষেত্রে একই ফল পাওয়া যাবে y)।
সুপারক্যাট

@ শুক্র্যাট আপনার এখনও তুলনা প্রয়োজন, তবে ভাষাটি বরং প্রতিটি ভাসমান বিন্দু তুলনার জন্য একটি সহনশীলতা নির্দিষ্ট করার জন্য আমার প্রয়োজন ছিল, আমি তখনও সহনশীলতা = 0 বাছাই করে সাম্যের দিকে ফিরে যেতে পারি, তবে আমি কমপক্ষে এটি তৈরি করতে বাধ্য হই পছন্দ
জে.কে.

3

ভাষাগুলি একটি জিনিস করতে পারে - এনএএন মানের সাথে সরাসরি তুলনা ব্যতীত ভাসমান পয়েন্ট ধরণের সমতা তুলনা সরিয়ে ফেলুন।

ইক্যুয়ালিটি টেস্টিং কেবলমাত্র ফাংশন কল হিসাবে উপস্থিত হবে যা দুটি মান এবং একটি ব-দ্বীপ গ্রহণ করেছে, বা সি # এর মতো ভাষার জন্য যে ধরণের পদ্ধতির ক্ষেত্রে ইক্যুয়ালটোকে অন্যান্য মান এবং ব-দ্বীপ গ্রহণ করে তা গ্রহণ করতে পারে।


3

আমি এটি আশ্চর্যজনক মনে করি যে কেউ লিস্প পরিবারের যুক্তিযুক্ত নম্বর কৌশলটি দেখায়নি।

সিরিয়াসলি, এসবিসিএল খুলুন, এবং এটি করুন: (+ 1 3)এবং আপনি 4 পাবেন যদি আপনি *( 3 2)6 পান তবে এখন চেষ্টা করুন (/ 5 3)এবং আপনি 5/3 বা 5 তৃতীয়াংশ পান।

এটি কিছু পরিস্থিতিতে কিছুটা সহায়তা করা উচিত, তাই না?


আমি অবাক হচ্ছি, যদি সম্ভব হয় তবে যদি কোনও ফলাফলকে 1/3 হিসাবে উপস্থাপন করা প্রয়োজন বা সঠিক দশমিক হতে পারে?
ম্যাকসিএক্স

ভাল পরামর্শ
পিটার পোর্টি

3

আমি কেবল একটা বিষয় দেখতে চাই একটি স্বীকৃতি যে হবে doubleথেকে float, একটি প্রসার রূপান্তর হিসাবে গণ্য করা উচিত যখন floatথেকে doubleসংকীর্ণ হয় (*)। এটি পাল্টা স্বজ্ঞাত মনে হতে পারে তবে ধরণের প্রকৃত অর্থ কী তা বিবেচনা করুন:

  • 0.1f এর অর্থ "13,421,773.5 / 134,217,728, প্লাস বা বিয়োগ 1 / 268,435,456 বা তাই"।
  • ০.০ এর প্রকৃত অর্থ 3,602,879,701,896,397 / 36,028,797,018,963,968, যোগ বা বিয়োগ 1 / 72,057,594,037,927,936 বা "

যদি কারওটির একটিতে " doubleদশমাংশ" পরিমাণের সর্বোত্তম উপস্থাপনা থাকে এবং এটিকে রূপান্তরিত করা হয় float, ফলাফলটি হবে "13,421,773.5 / 134,217,728, যোগ বা বিয়োগ 1 / 268,435,456 বা তাই", যা মানটির সঠিক বর্ণনা।

বিপরীতে, যদি কারওটিতে " floatদশমাংশ" পরিমাণের সর্বোত্তম উপস্থাপনা থাকে এবং এটিকে রূপান্তরিত করা হয় double, ফলাফলটি হবে "13,421,773.5 / 134,217,728, এবং আরও বিয়োগ 1 / 72,057,594,037,927,936 বা" - অন্তর্নিহিত নির্ভুলতার একটি স্তর যা 53 মিলিয়নেরও বেশি ফ্যাক্টর দ্বারা ভুল is

যদিও আইইইই-74৪৪ স্ট্যান্ডার্ডের প্রয়োজন হয় যে ভাসমান-পয়েন্ট গণিতগুলি সম্পাদন করা উচিত যদিও প্রতিটি ভাসমান-পয়েন্ট সংখ্যাটি তার পরিসরের কেন্দ্রস্থলে যথাযথ সংখ্যার পরিমাণকে যথাযথভাবে উপস্থাপন করে, এমনটি বোঝানো উচিত নয় যে ভাসমান-পয়েন্টের মানগুলি যথাযথভাবে প্রতিনিধিত্ব করে সংখ্যাগত পরিমাণ। পরিবর্তে, মানগুলি যেহেতু তাদের পরিসীমা কেন্দ্রস্থলে বলে ধরে নেওয়া দরকার তা তিনটি সত্য থেকে উদ্ভূত: (1) গণনাগুলি অবশ্যই সম্পাদন করা উচিত যদিও অপারেটরগুলির কিছু নির্দিষ্ট সুনির্দিষ্ট মান রয়েছে; (২) সামঞ্জস্যপূর্ণ এবং নথিভুক্ত অনুমানগুলি অসঙ্গতিযুক্ত বা অনিবন্ধিতদের চেয়ে বেশি সহায়ক; (৩) যদি কেউ একটি ধারাবাহিক অনুমান করতে চলেছে তবে কোনও পরিমাণের পরিসীমা কেন্দ্রের প্রতিনিধিত্ব করে এমন ধনাত্মক ধারণা গ্রহণের চেয়ে আর কোনও সুসংগত অনুমানই ভাল হতে পারে না।

ঘটনাক্রমে, আমার মনে আছে প্রায় 25 বছর বা তারও আগে, কেউ সি এর জন্য একটি সংখ্যাসূচক প্যাকেজ নিয়ে এসেছিল যার মধ্যে "পরিসীমা প্রকার" ব্যবহার করা হত, যার মধ্যে 128-বিট ভাসমান একটি জুটি থাকে; সমস্ত ফলাফল গণনা যেমন প্রতিটি ফর্মের জন্য সর্বনিম্ন এবং সর্বাধিক সম্ভাব্য মান গণনা করা যায় fashion যদি কেউ একটি দীর্ঘ দীর্ঘ পুনরাবৃত্ত গণনা সম্পাদন করে এবং [12.53401391134 12.53902812673] এর মান নিয়ে আসে, তবে কেউ আত্মবিশ্বাসের সাথে বিশ্বাস করতে পারে যে অনেকগুলি অঙ্ক যথাক্রমে গোলাকার ত্রুটিতে হারিয়ে গেছে, তবে ফলাফলটি যথাযথভাবে 12.54 হিসাবে প্রকাশ করা যেতে পারে (এবং এটি ছিল না ') টি সত্যই 12.9 বা 53.2)। আমি অবাক হয়েছি যে কোনও মূলধারার ভাষায় আমি এ জাতীয় ধরণের জন্য কোনও সমর্থন দেখিনি, বিশেষত যেহেতু তারা গণিত ইউনিটগুলির সাথে সমানভাবে একাধিক মানকে পরিচালনা করতে পারে এমন উপযুক্ত বলে মনে হয়।

(*) অনুশীলনে, একক-নির্ভুলতা সংখ্যার সাথে কাজ করার সময় অন্তর্বর্তী গণনাগুলি ধরে রাখতে দ্বি-নির্ভুলতার মানগুলি প্রায়শই সহায়ক, সুতরাং এই জাতীয় সমস্ত ক্রিয়াকলাপের জন্য টাইপকাস্ট ব্যবহার করা বিরক্তিকর হতে পারে। ভাষাগুলি "ফাজি ডাবল" প্রকারের সাহায্যে সহায়তা করতে পারে, যা দ্বিগুণ হিসাবে গণনা সম্পাদন করতে পারে, এবং অবিচ্ছিন্নভাবে এবং একা থেকে কাস্ট করা যেতে পারে; এটি বিশেষত সহায়ক হবে যদি টাইপ doubleএবং রিটার্নের পরামিতিগুলি গ্রহণ করে এমন ফাংশনগুলি doubleচিহ্নিত করা যায় যাতে তারা স্বয়ংক্রিয়ভাবে একটি ওভারলোড উত্পন্ন করে যা পরিবর্তে "ফাজি ডাবল" গ্রহণ করে এবং প্রত্যাবর্তন করে।


2

যদি আরও প্রোগ্রামিং ভাষা ডেটাবেসগুলি থেকে কোনও পৃষ্ঠা নেয় এবং বিকাশকারীদের তাদের সংখ্যার ডেটা ধরণের দৈর্ঘ্য এবং যথার্থতা নির্দিষ্ট করার অনুমতি দেয় তবে তারা ভাসমান পয়েন্ট সম্পর্কিত ত্রুটির সম্ভাবনা যথেষ্ট পরিমাণে হ্রাস করতে পারে। যদি কোনও ভাষা কোনও বিকাশকারীকে ফ্লোট (2) হিসাবে ভেরিয়েবল ঘোষণার অনুমতি দেয়, তবে এটি নির্দেশ করে যে তাদের দুটি দশমিক অঙ্কের যথার্থতার সাথে একটি ভাসমান পয়েন্ট সংখ্যা প্রয়োজন, এটি আরও বেশি নিরাপদে গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে পারে। যদি এটি অভ্যন্তরীণভাবে ভেরিয়েবলটিকে একটি পূর্ণসংখ্যা হিসাবে উপস্থাপন করে এবং মানটি প্রকাশের আগে 100 দ্বারা ভাগ করে, এটি দ্রুত পূর্ণসংখ্যার গাণিতিক পাথ ব্যবহার করে গতি উন্নত করতে পারে। একটি ফ্লোট (২) এর শব্দার্থকগুলি বিকাশকারীদের ডেটা আউটপুট দেওয়ার আগে ধ্রুবক প্রয়োজনীয় তথ্য এড়াতে দেয় যেহেতু একটি ফ্লোট (২) সহজাতভাবে দুটি দশমিক পয়েন্টের সাথে ডেটা গোল করে।

অবশ্যই, যখন বিকাশকারীকে সেই নির্ভুলতা থাকা দরকার তখন আপনাকে কোনও বিকাশকারীকে সর্বাধিক-নির্ভুলতা ভাসমান পয়েন্টের মান জিজ্ঞাসা করতে হবে। এবং আপনি এমন সমস্যাগুলি প্রবর্তন করবেন যেখানে একই গাণিতিক অপারেশনের সামান্য ভিন্ন অভিব্যক্তিগুলি মধ্যবর্তী বৃত্তাকার ক্রিয়াকলাপের কারণে সম্ভাব্য বিভিন্ন ফলাফল তৈরি করে যখন বিকাশকারীরা তাদের ভেরিয়েবলগুলিতে পর্যাপ্ত নির্ভুলতা বহন করে না। তবে অন্তত ডাটাবেস বিশ্বে এটি খুব বড় চুক্তি বলে মনে হয় না। বেশিরভাগ মানুষ বিভিন্ন ধরণের বৈজ্ঞানিক গণনা করছেন না যার মধ্যবর্তী ফলাফলগুলিতে প্রচুর নির্ভুলতার প্রয়োজন।


দৈর্ঘ্য এবং নির্ভুলতা উল্লেখ করা খুব কার্যকর যে কার্যকর হবে। ফিক্সড-পয়েন্ট বেস 10 থাকা আর্থিক প্রক্রিয়াকরণের জন্য কার্যকর হবে, যা ভাসমান-পয়েন্ট থেকে লোকেরা যে চমক পেয়ে থাকে তা সরিয়ে দেয়।
ডেভিড থর্নলি

@ ডেভিড - সম্ভবত আমি কিছু মিস করছি তবে আমি এখানে যে প্রস্তাব করছি তার চেয়ে কীভাবে একটি নির্দিষ্ট পয়েন্ট বেস 10 ডাটা টাইপ আলাদা? আমার উদাহরণে একটি ফ্লোট (2) এর স্থির 2 দশমিক অঙ্ক থাকবে এবং স্বয়ংক্রিয়ভাবে নিকটতম শততম হয়ে যাবে যা আপনি সম্ভবত আর্থিক আর্থিক গণনার জন্য ব্যবহার করবেন। আরও জটিল গণনার জন্য বিকাশকারী দশমিক অঙ্কের একটি বৃহত সংখ্যক বরাদ্দ করতে হবে।
জাস্টিন গুহ

1
আপনি যা পরামর্শ করছেন তা হ'ল প্রোগ্রামার-নির্দিষ্ট নির্ভুলতার সাথে একটি নির্দিষ্ট পয়েন্ট বেস 10 ডেটা টাইপ। আমি বলছি যে প্রোগ্রামার-নির্দিষ্ট নির্ভুলতা বেশিরভাগ ক্ষেত্রে অর্থহীন, এবং কেবলমাত্র সিওবিএল প্রোগ্রামগুলিতে আমি যে ধরণের ত্রুটিগুলি ব্যবহার করতাম তা বাড়ে। (উদাহরণস্বরূপ, যখন আপনি ভেরিয়েবল স্পষ্টতা পরিবর্তন করেন, এটা বাস্তব সহজ মাধ্যমে এক পরিবর্তনশীল মান রান মিস করতে হচ্ছে অন্যের জন্য, এটি একটি অনেক বেশি সময় লাগতে অন্তর্বর্তী ফলাফলের আকারের তুলনায় ভালো সম্পর্কে চিন্তা করতে হবে।।)
ডেভিড Thornley

4
Float(2)আপনার প্রস্তাবের মতো একটি বলা উচিত নয় Float, যেহেতু এখানে ভাসমান কিছুই নেই, অবশ্যই এটি "দশমিক বিন্দু" নয়।
পাওলো ইবারম্যান

1
  • ভাষার দশমিক ধরণের সমর্থন রয়েছে; অবশ্যই এটি সমস্যাটি সত্যিই সমাধান করে না, এখনও আপনার উদাহরণের সঠিক এবং সীমাবদ্ধ উপস্থাপনা নেই ⅓;
  • কিছু ডিবি এবং ফ্রেমওয়ার্কগুলিতে মানি টাইপ সমর্থন থাকে, এটি মূলত পূর্ণসংখ্যা হিসাবে সেন্টের সংখ্যা সংরক্ষণ করে;
  • যৌক্তিক সংখ্যা সমর্থনের জন্য কিছু গ্রন্থাগার রয়েছে; যা ⅓ এর সমস্যা সমাধান করে তবে উদাহরণস্বরূপ √2 এর সমস্যা সমাধান করে না;

এগুলি উপরোক্ত কিছু ক্ষেত্রে প্রযোজ্য তবে সত্যই ভাসমান মানগুলির সাথে সম্পর্কিত কোনও সাধারণ সমাধান নয়। আসল সমাধান হ'ল সমস্যাটি বোঝা এবং কীভাবে এটি মোকাবেলা করতে হয় তা শিখতে। আপনি যদি ফ্লোট পয়েন্ট গণনা ব্যবহার করছেন তবে আপনার অ্যালগরিদমগুলি সংখ্যাসূচকভাবে স্থিতিশীল কিনা তা আপনার সর্বদা পরীক্ষা করা উচিত । এখানে গণিত / কম্পিউটার বিজ্ঞানের বিশাল ক্ষেত্র রয়েছে যা সমস্যার সাথে সম্পর্কিত। একে সংখ্যার বিশ্লেষণ বলা হয় ।


1

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আর্থিক সফটওয়্যারগুলিতে ভাসমান পয়েন্ট সমস্যাগুলি এড়ানোর একমাত্র আসল উপায় এটি ব্যবহার না করা। এটি প্রকৃতপক্ষে সম্ভাব্য - আপনি যদি আর্থিক গণিতে উত্সর্গীকৃত কোনও সুনির্দিষ্ট গ্রন্থাগার সরবরাহ করেন ।

ভাসমান-বিন্দু অনুমান আমদানি করার জন্য নকশাকৃত কার্যাদি স্পষ্টভাবে লেবেলযুক্ত হওয়া উচিত এবং সেই ক্রিয়াকলাপের উপযুক্ত পরামিতি সরবরাহ করা উচিত, যেমন:

Finance.importEstimate(float value, Finance roundingStep)

সাধারণভাবে ভাসমান পয়েন্ট সমস্যাগুলি এড়ানোর একমাত্র আসল উপায় হল শিক্ষা - প্রোগ্রামারদের ফ্লোটিং-পয়েন্ট অ্যারিমেটিক সম্পর্কে প্রতিটি প্রোগ্রামার যা জানা উচিত তা জাতীয় কিছু পড়তে এবং বুঝতে হবে ।

কিছু জিনিস যা সাহায্য করতে পারে, যদিও:

  • আমি যারা জিজ্ঞাসা করব তাদের দ্বিতীয় করব "ভাসমান পয়েন্টের জন্য সঠিক সমতা পরীক্ষা কেন আইনী?"
  • পরিবর্তে, একটি isNear()ফাংশন ব্যবহার করুন ।
  • ভাসমান-পয়েন্ট সংগ্রহকারী অবজেক্টগুলি সরবরাহ করুন এবং তাদের উত্সাহ দিন (যা নিয়মিত ভাসমান বিন্দু ভেরিয়েবলের মধ্যে সবগুলি যুক্ত করার চেয়ে আরও স্থিরভাবে ভাসমান পয়েন্টের মানগুলিকে যুক্ত করে)।

-1

বেশিরভাগ প্রোগ্রামাররা অবাক হবেন যে সিওবিএল এটি অধিকার পেয়েছিল ... সিওবিওএল এর প্রথম সংস্করণে কোনও ভাসমান বিন্দু ছিল না, কেবলমাত্র দশমিক, এবং সিওবিএল মধ্যে theতিহ্য আজ অবধি অব্যাহত ছিল যে কোনও সংখ্যা ঘোষণার সময় আপনি যে প্রথম জিনিসটি ভাবেন তা দশমিক হয়। .. আপনার যদি সত্যিই এটির প্রয়োজন হয় তবে কেবলমাত্র ভাসমান পয়েন্ট ব্যবহার করা হবে। সি যখন এসেছিল, কোনও কারণে, কোনও দশমিক দশমিক প্রকার ছিল না, সুতরাং আমার মতে, এখান থেকেই সমস্ত সমস্যা শুরু হয়েছিল।


1
সি এর দশমিক প্রকার ছিল না কারণ এটি আদিম নয়, খুব কম কম্পিউটারে কোনও ধরণের হার্ডওয়্যার দশমিক নির্দেশ রয়েছে। আপনি জিজ্ঞাসা করতে পারেন যে বেসিক এবং পাসকালের এটি কেন নেই, কারণ এগুলি ধাতব সাথে ঘনিষ্ঠভাবে তৈরি করার জন্য তৈরি করা হয়নি। কোবোল এবং পিএল / আমি সেই সময়ের মতোই কিছু ভাষা জানি languages
ডেভিড থর্নলি

3
@ জোয়েলফ্যান: সুতরাং আপনি কীভাবে সিওবিএল লিখবেন? দশমিক কোনও সমস্যা সমাধান করে না, বেস 10 বেস 2
মতোই অসম্পূর্ণ tec 23

2
দশমিক হুবহু ডলার এবং সেন্ট উপস্থাপনের সমস্যাটি সমাধান করে, এটি একটি "ব্যবসায়িক ওরিয়েন্টেড" ভাষার জন্য দরকারী। তবে অন্যথায়, দশমিক অকেজো; এতে অনেক ধীর হয়ে যাওয়ার সময়ে একই ধরণের ত্রুটি রয়েছে (যেমন, 1/3 * 3 = 0.99999999) । যেটা হচ্ছে কেন এটা না ভাষায় ডিফল্ট বিশেষভাবে অ্যাকাউন্টিং জন্য ডিজাইন করা হয় নি।
dan04

1
এবং ফরট্রান, যা সি এক দশকেরও বেশি সময় পূর্বে পূর্বাভাস দেয়, তার মানও দশমিক সমর্থন হয় না।
dan04

1
@ জোয়েলফ্যান: যদি আপনার ত্রৈমাসিক মান হয় এবং আপনার প্রতি মাসে মূল্য প্রয়োজন হয় তবে অনুমান করুন যে এটির দ্বারা গুণন করতে আপনার কী দরকার ... না, এটি 0.33 নয়, এটি ⅓ ⅓
ভের্টেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.