সি # তে অক্ষাংশ / দ্রাঘিমাংশ মানগুলির জন্য ডাবল বা দশমিক


97

সি # তে জিওপজিশনাল ডেটা সংরক্ষণ করার সময় সবচেয়ে ভাল ডাটা টাইপটি কী? আমি এর নির্ভুলতার জন্য দশমিক ব্যবহার করব, তবে দশমিক ভাসমান পয়েন্ট সংখ্যাগুলির অপারেশনগুলি ধীর হয় তারপরে বাইনারি ভাসমান পয়েন্ট সংখ্যা (ডাবল) হয়।

আমি পড়েছি যে বেশিরভাগ সময় আপনাকে অক্ষাংশ বা দ্রাঘিমাংশের জন্য 6 বা 7 ডিজিটের যথার্থতার আর প্রয়োজন হবে না। দ্বিগুণের অনর্থকতা কি তখনও গুরুত্বপূর্ণ বা এড়ানো যায়?


6
আমি বিপরীত প্রশ্নটি জিজ্ঞাসা করব: পারফরম্যান্সের এমনকি পার্থক্য কি এটি এড়ানো যায়?
হেইনজি

4
ডাটাবেসে আপনার দ্রাঘিমাংশ এবং অক্ষাংশ সংরক্ষণ করতে "
স্কয়ার স্পটিয়াল

8
নোট করুন যে নেট নেট বিসিএল নিজেই তার জিওকর্ডিনেট ক্লাসে ডাবল ব্যবহার করে , যা দৃ a় ইঙ্গিত দেয় যে নির্ভুলতা যথেষ্ট হতে পারে।
হেইনজি

4
নোডাটাইমের TzdbZoneLocation পাশাপাশি ডাবলও ব্যবহার করে।
রিক ডেভিন

4
1) আমি নির্দিষ্ট পয়েন্ট বিবেচনা করব। 2) যেহেতু আপনার প্রায়শই জিও স্থানাঙ্কগুলিতে ত্রিকোণমিতিক ক্রিয়াকলাপগুলি করা প্রয়োজন এবং সেগুলি কেবলমাত্র কার্যকর করা হয় double, doubleএটি সেরা উপযুক্ত হতে পারে।
CodeInChaos

উত্তর:


120

যাও double, বিভিন্ন কারণ আছে।

  • ত্রিকোণমিতিক ফাংশনগুলি কেবল দ্বিগুণ জন্য উপলব্ধ
  • দ্বিগুণ (100 ন্যানোমিটারের পরিসীমা) এর যথার্থতা ল্যাট / লনের মানগুলির জন্য আপনার যে কোনও সময় প্রয়োজন beyond
  • জিওকর্ডিনেট ক্লাস এবং তৃতীয় পক্ষের মডিউলগুলি (যেমন ডটস্প্যাটিয়াল ) স্থানাঙ্কগুলির জন্য ডাবলও ব্যবহার করে

75

একটি ডাবল স্পষ্টতা 15 দশমিক সংখ্যা আছে। সুতরাং, ধরে নেওয়া যাক সেই তিনটি অঙ্কের দশমিক পয়েন্টের বাম দিকে ল্যাট / লম্বা মানগুলির (সর্বাধিক 180 ডিগ্রি) দশমিক পয়েন্ট হতে চলেছে। এটি ডানদিকে যথাযথতার 12 ডিজিট ছেড়ে যায়। যেহেতু ল্যাট / লম্বা ডিগ্রি 111km ডলার, সেই 12 সংখ্যার 5 টি আমাদের মিটারের সূক্ষ্মতা দেবে। আরও 3 ডিজিট আমাদের মিলিমিটারে নির্ভুলতা দেয়। বাকি 4 অঙ্কগুলি আমাদের প্রায় 100 ন্যানোমিটারের সাথে নির্ভুলতা পেতে পারে। যেহেতু ডাবল পারফরম্যান্স এবং মেমরির দৃষ্টিকোণ থেকে জিতবে, তাই দশমিক ব্যবহারের বিষয়টি বিবেচনা করার কোনও কারণ আমি দেখতে পাচ্ছি না।


4
বিস্তারিত এবং সুনির্দিষ্ট ব্যাখ্যার জন্য প্লাস ওয়ান।
নজিব

4

আমি যখন স্পেসিয়াল প্রোগ্রামিং শুরু করেছিলাম তখনই আমি এই প্রশ্নের মুখোমুখি হয়েছি। আমি কিছুক্ষণ আগে একটি বই পড়েছিলাম যা আমাকে এই দিকে নিয়ে গিয়েছিল।

//sql server has a really cool dll that deals with spacial data such like
//geography points and so on. 
//add this namespace
Using Microsoft.SqlServer.Types;

// এসকিএল জিওগ্রাফি.পয়েন্ট.ডেবিএলল্যাট, ডিবিএললন, এসিড)

var lat_lon_point = Microsoft.SqlServer.Types.SqlGeography.Point(lat, lon, 4326);

স্পেসিয়াল ডেটা সহ আপনার অ্যাপ্লিকেশনটিতে কাজ করার সময় এটি সেরা উপায়। তারপরে ডেটা সংরক্ষণ করতে স্কুএলে এটি ব্যবহার করুন

CREATE TABLE myGeoTable
{
LatLonPoint GEOMETRY 
}

অন্যথায়, আপনি যদি এসকিএল না করে এমন কিছু ব্যবহার করেন যা কেবলমাত্র বিন্দুটিকে হেক্সাডেসিমাল রূপান্তর করে এটি সঞ্চয় করে। আমি স্প্যাসিয়াল ব্যবহার করে দীর্ঘ সময় পরে জানি যে এটি সবচেয়ে নিরাপদ।


ল্যাটলোনপয়েন্টে আমি কী সমস্যা খুঁজে পাচ্ছি, আপনার সি # প্রকল্পে আপনার কোন রেফারেন্স বা প্যাকেজগুলি অন্তর্ভুক্ত করতে হবে বা কী 'ইউএসিং' রয়েছে? (ধরে নিচ্ছেন তৈরি টেবিলটি আইডেন্টিটি মডেল / সি # কোডের জন্য ছিল, কারণ এই প্রকারটি এসএসএমএসে মূল্যায়ন করে না)। তুমাকে অগ্রিম ধন্যবাদ!
ক্রিস

1

দ্বিগুণ

উত্তরগুলির সংমিশ্রণটি মাইক্রোসফ্ট কীভাবে এটি স্কেল জিওগ্রাফি লাইব্রেরিতে নিজেকে উপস্থাপন করে

[পান: মাইক্রোসফ্ট.এসএইচএল সার্ভার.সর্ভার.এসকিএলথ ম্যাথড (ইসডেটেরিস্টিনিস্টিক = সত্য, ইসপ্রেসাইজ = সত্য)] পাবলিক সিস্টেম.ডাটা.সেক্লিটটাইপস.এসএইচএলডিউবল ল্যাট {পেতে; } সম্পত্তির মান SQLlDouble একটি SQL ডাবল মান যা অক্ষাংশটি নির্দিষ্ট করে।

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