SQL خادم نوع البيانات الدقة - الجديدة، ما هو حقيقي؟
-
20-09-2019 - |
سؤال
وSQL 2000 ملقم الوثائق :
<اقتباس فقرة>هل العائمة نقطة بيانات الرقم مع ما يلي القيم الصالحة: -3.40E + 38 من خلال -1.18E - 38، 0 و1.18E - 38 خلال 3.40E + 38. حجم التخزين هو 4 بايت. في SQL Server أو مرادف لريال مدريد هو تعويم (24).
اقتباس فقرة>وSQL خادم 2005 الوثائق :
<اقتباس فقرة>وهذا مرادف ISO لريال مدريد هو تعويم (24).
اقتباس فقرة>وتحرير: وبالنظر إلى ما أقرأه تقول ودقة هو 7 ولكن يمكنني أن أدخل في قاعدة البيانات (SQL خادم 2005) كحد أقصى من 9 انظر أدناه، كما جاء بالمثل <لأ href = "http://www.sql-server-helper.com /faq/data-types-p01.aspx "يختلط =" noreferrer نوفولو "> هنا السؤال لا. 7.
وعلى سبيل المثال: 0.180000082
ما هي الدقة الحقيقية على حقيقية وهناك خيارات التكوين؟ (أي: وسائط التوافق) التي يمكن أن تؤثر على دقة
المحلول
وإجابتك على تلك الصفحة نفسها التي ترتبط:
<اقتباس فقرة>لنوع البيانات تعويم، ن هو عدد <قوية> بت المستخدمة لتخزين الجزء العشري في العلمي
اقتباس فقرة>و24 بت من العشري يعطيك (تقريبا) 7 <م> العشرية م> أرقام من الدقة (ل2 ^ 24 ~ = 10 ^ 7).
تحرير م> إضافة:
لاحظ أن كل شخص يحتفظ قائلا "تقريبا" - وهذا هو لسبب:)
وثنائي أرقام النقطة العائمة والحرفية عشري لا تلعب بالضرورة معا بطريقة بديهية. لخلفية قراءة ما كل الحاسوب عالم أن تعرف عن العائمة نقطة الحساب . لاحظ أيضا أن قوله "ما يقرب من 7 أرقام عشرية من الدقة م> 'لا يتعارض مع القدرة على تخزين قيمة مع أكثر من 7 أرقام كبيرة! هل يعني ذلك أن هذا نوع البيانات لن تكون قادرة على التمييز بين 0.180000082 و0.180000083، على سبيل المثال، لأنه لم يتم تخزين الواقع <م> بالضبط م> قيمة إما:
declare @f1 real
declare @f2 real
set @f1 = 0.180000082
set @f2 = 0.180000083
select @f1, @f2
select @f1 - @f2
------------- -------------
0.1800001 0.1800001
(1 row(s) affected)
-------------
0
(1 row(s) affected)
والحقيقة هي أن real
هو نفس float(24)
، ثنائي العائمة رقم نقطة مع 24 بت من العشري، وأنا لا أعتقد أن هناك طريقة لتغيير هذا. أنواع الفاصلة العائمة هي بشكل عام ليست خيارا جيدا إذا كنت ترغب في تخزين كميات العشرية بالضبط.
نصائح أخرى
وأنت الخلط بين ثنائي (القاعدة 2) الدقة مع عشري (قاعدة 10) الدقة. 24 بت تعطيك ما يقرب من 7 أرقام عشرية.
ويستخدم SQL Server إما 4 أو 8 بايت بايت لتخزين غير عشري العائمة أرقام نقطة.
إذا قمت بتحديد القيمة الحقيقية أو أي في تعويم مجموعة <1> لتعويم <24>، والاستخدامات الخادم SQL تطفو <24> داخليا. إذا كنت تستخدم تعويم أو أي شيء في تعويم مجموعة <25> لتعويم <53> (الحد)، فإنه يستخدم تعويم <53> والذي يعرف أيضا باسم الدقة المزدوجة.
وثائق MSDN لتطفو في SQL Server 2005 هنا هو: تعويم وحقيقية ( للعمليات SQL)
إذا كان لديك حاجة محددة بدقة، والنظر بدلا من ذلك في استخدام عشري، الذي يوفر الدقة شكلي وعلى نطاق و: <لأ href = "http://msdn.microsoft.com/en-us/library/ms187746٪28SQL.90 ٪ 29.aspx "يختلط =" noreferrer نوفولو "> العشرية ورقمية (SQL للعمليات)