ডাবলগুলি বেশিরভাগের পরিবর্তে সুপারিশ করা হয় তখনও কেন ভাসা জাভা ভাষার অংশ?


84

আমি যে জায়গাতেই দেখেছি, এটি বলছে যে doubleএটি floatপ্রায় প্রতিটি উপায়েই শ্রেষ্ঠ । জাভা floatদ্বারা অপ্রচলিত করা হয়েছে double, তাই কেন এটি এখনও ব্যবহার করা হয়?

আমি লিবিডিএক্সের সাথে প্রচুর প্রোগ্রাম করি এবং তারা আপনাকে float(ডেল্টটাইম, ইত্যাদি) ব্যবহার করতে বাধ্য করে , তবে আমার কাছে মনে হয় doubleস্টোরেজ এবং মেমরির ক্ষেত্রে এটি কাজ করা সহজ।

আমি আরও পড়ি আপনি কখন ভাসাটি ব্যবহার করবেন এবং আপনি কখন ডাবল ব্যবহার করবেনfloat তবে দশমিক পয়েন্টের পরে যদি খুব সংখ্যার সাথে সত্যিই কেবল ভাল হয় তবে কেন আমরা কেবলমাত্র বিভিন্ন ধরণের পরিবর্তনের একটিটি ব্যবহার করতে পারি না double?

এর আসলে কোনও সুবিধা না থাকা সত্ত্বেও মানুষ কেন ভাসা ব্যবহারের জন্য জোর দিয়েছিল তার কোনও কারণ আছে? সব পরিবর্তন করা কি খুব বেশি কাজ?



58
কীভাবে বিশ্বে আপনি এই প্রশ্নের উত্তর থেকে দশমিক পয়েন্টের পরে "দশমিক পয়েন্টের পরে প্রচুর অঙ্কের সংখ্যার পক্ষে ভাসমানটি সত্যিই খুব ভাল?" তারা সরাসরি উল্টো কথা বলে !
সাধারণ

20
@ এয়েমস নোট করুন এটি কীভাবে "সংখ্যা" বলছে, "অঙ্কগুলি" নয়। আপনার নির্ভুলতা বা ব্যাপ্তির প্রয়োজন হলে ভাসমানগুলি আরও খারাপ হয়, যখন আপনার প্রচুর এবং প্রচুর পরিমাণে-নির্ভুল ডেটা প্রয়োজন হয় তখন সেগুলি আরও ভাল । সেই উত্তরগুলি সেটাই বলে।
সাধারণ

29
কেন আমরা আছে byteএবং shortএবং intআছে যখন long?
ইমিগ্রিস

15
আরও অনেক উপযুক্ত প্রশ্ন হ'ল "আপনি দশকের দশক কোড সহ কোনও ভাষা থেকে কীওয়ার্ড এবং আদিম ডাটাটাইপটি সরিয়ে ফেলবেন যা কেবল অকারণেই ভেঙে যাবে"?
সারা

উত্তর:


169

LibGDX বেশিরভাগ গেম বিকাশের জন্য ব্যবহৃত একটি কাঠামো।

গেম ডেভেলপমেন্টে আপনাকে সাধারণত রিয়েল-টাইম এবং ক্রিয়াকলাপের ক্ষেত্রে ক্রমঞ্চের পুরো সংখ্যাটি করতে হয় এবং আপনি যে বিষয়গুলি পেতে পারেন। এ কারণেই গেম ডেভেলপাররা সাধারণত ফ্লোট ব্যবহার করেন যখনই ফ্লোটের যথার্থতা যথেষ্ট ভাল।

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

এবং তারপরেও রয়েছে:

  • মেমরি বাস ব্যান্ডউইদথ (আপনি কত দ্রুত র‍্যাম, সিপিইউ এবং জিপিইউর মধ্যে ডেটা বেলন করতে পারেন)
  • সিপিইউ ক্যাশে (যা আগেরটি কম প্রয়োজনীয় করে তোলে)
  • র্যাম
  • VRAM

যা সমস্ত মূল্যবান সংস্থান যা আপনি 64৪ বিট দ্বিগুণের পরিবর্তে 32 বিবিট ফ্লোট ব্যবহার করলে আপনি দ্বিগুণ হন।


2
ধন্যবাদ! এটি সত্যই সহায়তা করেছিল কারণ আপনি কীভাবে মেমরির ব্যবহার পরিবর্তন করেছেন এবং কেন
ইমাস

7
এছাড়াও, সিমডি অপারেশনের জন্য, 32-বিট মানগুলির দ্বিগুণ থ্রুপুট থাকতে পারে। 8 বিট্রি'র উত্তরটি উল্লেখ করে যে, জিপিইউগুলির দ্বিগুণ নির্ভুলতার সাথে আরও বেশি পারফরম্যান্স পেনাল্টি রয়েছে।
পল এ। ক্লেটন

5
অনেক গ্রাফিক পাইপলাইন এমনকি নির্ভুলতা যথেষ্ট যেখানে কর্মক্ষমতা বাড়াতে 16 বিট অর্ধ-ফ্লোট সমর্থন করে।
আদি শবিত

22
@ ফ্রেসেল সব হ'ল আপনাকে অবস্থানগুলি স্থানান্তর করতে হবে, ডেটা আপডেট করতে হবে এবং কী নয়। এবং এটি সহজ অংশ। তারপরে আপনাকে টেক্সচার, দূরত্ব, স্ক্রিনের ফর্ম্যাটে পৌঁছাতে (টেক্সট, ঘোরানো, স্কেল এবং অনুবাদ) রেন্ডার করতে হবে ... অনেক কিছুই করার আছে।
সেবব

8
গেম ডেভেলপমেন্ট এন্টারপ্রাইজের প্রাক্তন ভিপি অপারেশন হিসাবে @ ফ্রেসনেল, আমি আপনাকে আশ্বাস দিচ্ছি যে প্রায় প্রতিটি গেমের মধ্যে এক টন সংখ্যার ক্রাঞ্চিং রয়েছে। নোট করুন এটি সাধারণত গ্রন্থাগারে থাকে এবং 100% প্রকৌশলী থেকে দূরে থাকে, আমি আশা করি তারা বুঝতে পেরেছেন এবং শ্রদ্ধা করছেন যে সমস্ত ক্র্যাঙ্কিং চলছে। ম্যাজিক ইনভার্স স্কোয়ার রুট, কেউ?
কর্সিকা

57

ভাসমানগুলি দ্বিগুণ হিসাবে অর্ধেক মেমরি ব্যবহার করে।

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

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


8
নিউরাল নেটওয়ার্কগুলির কথা বলতে গেলে, CUDA বর্তমানে মেশিন লার্নিং কাজের জন্য এক্সিলারগুলির বর্ধিত ব্যবহারের কারণে অর্ধ-নির্ভুলতা (16-বিট) ভাসমান পয়েন্ট ভেরিয়েবলগুলির জন্য সমর্থন রয়েছে, এমনকি কম সুনির্দিষ্ট তবে কম মেমরির পদক্ষেপের সাথেও।
জ্যাব

এবং আপনি যখন এফপিজিএগুলি প্রোগ্রাম করেন আপনি ম্যান্টিসা এবং খালি উভয়ই ম্যানুয়ালি প্রতিবারের জন্য বিটের পরিমাণ নির্বাচন করতে চান: ভি
সেবি

48

পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যপূর্ণ

ইতিমধ্যে বিদ্যমান ভাষা / গ্রন্থাগার / আইএসএ / ইত্যাদিতে আচরণ রাখার জন্য এটি প্রথম কারণ ।

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

কর্মক্ষমতা

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

আপনার জন্য বিশেষত প্রাসঙ্গিক, Libgdx একটি গেম লাইব্রেরি। গেমগুলির বেশিরভাগ সফ্টওয়্যার থেকে বেশি পারফরম্যান্স সংবেদনশীল হওয়ার প্রবণতা থাকে। এবং গেমিং গ্রাফিক্স কার্ডগুলি (যেমন এএমডি রেডিয়ন এবং এনভিআইডিআইএ গিয়ারফোর্ড, ফায়ারপ্রো বা কোয়াড্রো নয়) খুব দুর্বল 64 বিট ভাসমান পয়েন্ট কর্মক্ষমতা রাখে। আনন্দটেকের সৌজন্যে, এখানে এএমডি এবং এনভিআইডিআইএর শীর্ষ গেমিং কার্ডগুলির কিছুতে উপলব্ধ ডাবল স্পষ্টতা পারফরম্যান্সের সাথে একক নির্ভুলতার পারফরম্যান্সের তুলনা করা হয়েছে (২০১ early সালের শুরুর দিকে)

AMD
Card    R9 Fury X      R9 Fury       R9 290X    R9 290
FP64    1/16           1/16          1/8        1/8

NVIDIA
Card    GTX Titan X    GTX 980 Ti    GTX 980    GTX 780 Ti
FP64    1/32           1/32          1/32       1/24

মনে রাখবেন যে R9 ফিউরি এবং জিটিএক্স 900 সিরিজটি আর -200 200 এবং জিটিএক্স 700 সিরিজের চেয়ে নতুন, সুতরাং bit৪ বিট ভাসমান পয়েন্টের জন্য আপেক্ষিক কার্যকারিতা হ্রাস পাচ্ছে। যথেষ্ট পরিমাণে ফিরে যান এবং আপনি জিটিএক্স 580 পেয়ে যাবেন, যার R9 200 সিরিজের মতো 1/8 অনুপাত ছিল।

পারফরম্যান্সের ১/৩৩ অর্থ প্রদানের জন্য বেশ বড় দন্ড is


1
নোট করুন যে increasingly৪-বিট ভাসমান পয়েন্টের জন্য পারফরম্যান্স ক্রমবর্ধমান-উচ্চতর অনুকূলিত 32-বিট নির্দেশনার কারণে 32-বিট পারফরম্যান্সের তুলনায় হ্রাস পাচ্ছে, আসল 64-বিট কার্যকারিতা হ্রাস পাচ্ছে বলে নয়। এটি ব্যবহৃত প্রকৃত মানদণ্ডের উপরও নির্ভর করে; আমি অবাক হই যদি এই বেঞ্চমার্কগুলিতে হাইলাইট করা 32-বিট পারফরম্যান্স ঘাটতি মেমরি ব্যান্ডউইথ ইস্যুগুলির সাথে সাথে প্রকৃত গণনার গতির কারণে হয়
sig_seg_v

আপনি যদি গ্রাফিক্স কার্ডগুলিতে ডিপি পারফরম্যান্স সম্পর্কে কথা বলতে যাচ্ছেন তবে আপনার অবশ্যই টাইটান / টাইটান ব্ল্যাক উল্লেখ করা উচিত। উভয় বৈশিষ্ট্য মোড যা একক নির্ভুল পারফরম্যান্সের মূল্যে কার্ডটিকে 1/3 পারফরম্যান্সে পৌঁছাতে দেয়।
এসজিআর

@ সিগ_সেইগ_ভি কমপক্ষে এমন কিছু ক্ষেত্রে রয়েছে যেখানে relatively৪-বিট পারফরম্যান্স হ্রাস পেয়েছে, কেবল তুলনামূলকভাবে নয়। ডাবল স্পষ্টতা ভাঁজ @ হোম বেঞ্চমার্কের জন্য এই ফলাফলগুলি দেখুন , যেখানে একটি জিটিএক্স 780 টি জিটিএক্স 1080 (অন্য একটি 1/32 অনুপাত কার্ড) এবং একটি 980 টি উভয়ই পরাজিত করে এবং এএমডির পাশে, 7970 (একটি 1/4 অনুপাত কার্ড) পাশাপাশি R9 290 এবং R9 290X সমস্তই R9 ফিউরি সিরিজটিকে পরাজিত করেছে। এটি বেঞ্চমার্কের একক নির্ভুল সংস্করণের সাথে তুলনা করুন , যেখানে নতুন কার্ডগুলি তাদের পূর্বসূরীদের খুব সহজেই ছাড়িয়ে যায়।
বিট্রি

36

পারমাণবিক অপারেশন

অন্যরা ইতিমধ্যে যা বলেছে তা ছাড়াও double(এবং long) এর একটি জাভা-নির্দিষ্ট অসুবিধা হ'ল 64৪-বিট আদিম ধরণের অ্যাসাইনমেন্টগুলি পারমাণবিক হওয়ার নিশ্চয়তা নেই । থেকে জাভা ল্যাঙ্গুএজ স্পেসিফিকেশন, জাভা SE 8 সংস্করণ , পৃষ্ঠা 660 (জোর দেওয়া যোগ):

17.7 অ-পারমাণবিক চিকিত্সা doubleএবংlong

জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ মেমোরি মডেলের উদ্দেশ্যে, একটি অ-উদ্বায়ী longবা doubleমানকে একটি লেখার জন্য দুটি পৃথক লেখার মতো বিবেচনা করা হয়: প্রতি 32-বিট অর্ধেকের জন্য একটি। এটি এমন পরিস্থিতিতে পড়তে পারে যেখানে কোনও থ্রেড একটি রচনা থেকে -৪-বিট মানের প্রথম 32 বিট এবং অন্য 32 টি থেকে অন্য লেখার বিট দেখতে পাবে।

ইশ।

এটি এড়াতে, আপনাকে কীওয়ার্ডের সাথে -৪-বিট ভেরিয়েবল ঘোষণা করতে হবেvolatile , বা অ্যাসাইনমেন্টের আশেপাশে সিঙ্ক্রোনাইজেশনের কিছু অন্য রূপ ব্যবহার করতে হবে।


2
হারানো আপডেটগুলি প্রতিরোধ করতে ওভারেজার ক্যাচিং প্রতিরোধের জন্য আপনার কীভাবে কোনওভাবেই ints এবং ভাসমানগুলির একযোগে অ্যাক্সেস সিঙ্ক্রোনাইজ করার দরকার নেই? আমি কি ভেবে ভ্রান্ত হয়েছি যে কেবলমাত্র অভ্যন্তরীণ / ভাসমান পারমাণবিকতা প্রতিরোধ করে তা হ'ল তারা কখনই "মিশ্র" মান রাখতে পারে না যা তাদের ধারণ করা হয়নি?
ট্রাবেনফুচস

3
@ ট্রাবেনফুচস এটিই সেখানে নিশ্চয়ই গ্যারান্টিযুক্ত। আমি এর জন্য যে শব্দটি শুনেছি তা হ'ল "টিয়ারিং" এবং আমি মনে করি এটি কার্যকরভাবে খুব সুন্দরভাবে ধারণ করে। জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ মডেল গ্যারান্টি দেয় যে 32 বিট মানগুলি যখন পড়বে তখন একটি মান থাকবে যা তাদের কাছে কিছু সময় লেখা হয়েছিল। এটি একটি আশ্চর্যজনক মূল্যবান গ্যারান্টি।
আম্মোন

পারমাণবিকতা সম্পর্কে এই বিষয়টি অত্যন্ত গুরুত্বপূর্ণ। বাহ, আমি এই গুরুত্বপূর্ণ ঘটনাটি ভুলে যেতে চাই। পাল্টা-স্বজ্ঞাত হিসাবে আমরা আধ্যাত্মিক প্রকৃতির দ্বারা পারমাণবিক হিসাবে চিন্তা করতে পারে। তবে এক্ষেত্রে পারমাণবিক নয়।
বেসিল বাউরক

3

এটি অন্যান্য জবাবগুলির একটি গুরুত্বপূর্ণ পয়েন্টটি মিস করেছে বলে মনে হয়: সিমডি আর্কিটেকচারগুলি কম / বেশি ডেটা প্রক্রিয়া করতে পারে যদি তারা কাজ করে doubleবা floatস্ট্রাক্ট করে (উদাহরণস্বরূপ, এক সময় আটটি ভাসমান মান, বা একবারে চারটি ডাবল মান) depending

পারফরম্যান্স বিবেচনার সারসংক্ষেপ

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

নির্ভুল বিবেচনার সারসংক্ষেপ

  • অনেক অ্যাপ্লিকেশন floatযথেষ্ট
  • double যাইহোক অনেক বেশি নির্ভুলতা রয়েছে

সামঞ্জস্যতা বিবেচনা

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

সাধারণ টিপস

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

আরও অন্তর্দৃষ্টি জন্য পিটারকর্ডস থেকে নীচের মন্তব্য দেখুন।


1
doubleটেম্পোরারিগুলি কেবল x86 এ x87 এফপিইউ দিয়ে বিনামূল্যে, এসএসই 2 দিয়ে নয়। doubleটেম্পোরারিগুলির সাহায্যে একটি লুপকে স্বয়ং-ভেক্টরাইজ floatকরার অর্থ প্যাকেজ প্যাক করা doubleযা অতিরিক্ত নির্দেশিকা গ্রহণ করে এবং আপনি ভেক্টর প্রতি অর্ধেক হিসাবে অনেক উপাদান প্রক্রিয়া করে। স্বতঃ-ভেক্টরাইজেশন ব্যতীত কোনও লোড বা স্টোর চলাকালীন রূপান্তরটি সাধারণত ফ্লাইতে ঘটতে পারে তবে এর অর্থ অতিরিক্ত নির্দেশাবলীর অর্থ যখন আপনি ভাসা-ভাসায় ভাসা এবং দ্বৈত মিশ্রণ করেন।
পিটার কর্ডেস

1
আধুনিক x86 সিপিইউগুলিতে, ডিভ এবং স্কয়ার্টগুলি ভাসমানের জন্য দ্বিগুণের চেয়ে দ্রুত হয় তবে অন্যান্য জিনিসগুলি একই গতি হয় (সিমডি ভেক্টরের প্রস্থ ইস্যু, বা মেমরি ব্যান্ডউইথ / ক্যাশে পাদপ্রিন্ট গণনা করা হয় না)।
পিটার কর্ডেস

@ পিটারকর্ডস কিছু পয়েন্ট বাড়ানোর জন্য ধন্যবাদ। আমি
ডিভ

0

উল্লেখ করা অন্যান্য কারণ ছাড়াও:

আপনার যদি পরিমাপের ডেটা থাকে তবে তা চাপ, প্রবাহ, স্রোত, ভোল্টেজ বা যাই হোক না কেন, এটি প্রায়শই অ্যাডিসিযুক্ত হার্ডওয়্যার দিয়ে করা হয়।

একটি এডিসিতে সাধারণত 10 বা 12 বিট থাকে, 14 বা 16 বিটগুলি বিরল। তবে আসুন আমরা 16 বিট একটিতে স্থির থাকি - যদি পুরো স্কেলটি পরিমাপ করে তবে আপনার 1/65535 এর যথার্থতা পাওয়া যাবে। তার মানে 65534/65535 থেকে 65535/65535 এ পরিবর্তন কেবল এই পদক্ষেপ - 1/65535। এটি প্রায় 1.5E-05। একটি ফ্লোটের যথার্থতা 1E-07 এর কাছাকাছি, তাই আরও অনেক ভাল। এর অর্থ floatএই ডেটা সংরক্ষণ করার জন্য আপনি কোনও কিছু হারাবেন না ।

আপনি যদি ভাসা দিয়ে অত্যধিক গণনা করেন doublesতবে আপনি যথার্থতার তুলনায় কিছুটা খারাপ কাজ করেন তবে প্রায়শই আপনার সেই সঠিকতার প্রয়োজন হয় না, কারণ আপনি কেবলমাত্র 2 ভি বা 2.00002 ভি এর ভোল্টেজ পরিমাপ করেন কিনা তা আপনি যত্নবান হন না don't একইভাবে , যদি আপনি এই ভোল্টেজকে একটি চাপে রূপান্তর করেন তবে আপনার কাছে 3 বার বা 3.00003 বার রয়েছে কিনা তা বিবেচ্য নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.