.NET හි දශම, පාවෙන සහ දෙගුණයක් අතර වෙනස?


2097

අතර ඇති වෙනස කුමක්ද decimal, floatහා double.NET දී?

කවුරුහරි මේවායින් එකක් භාවිතා කරන්නේ කවදාද?


1
රසවත් ලිපිය zetcode.com/lang/csharp/datatypes
ගිබොක්

Answers:


2275

floatහා doubleකරන පාවෙන ද්විමය අවස්ථාවක වර්ග . වෙනත් වචන වලින් කිවහොත්, ඔවුන් මෙවැනි සංඛ්‍යාවක් නියෝජනය කරයි:

10001.10010110011

ද්විමය අංකය සහ ද්විමය ලක්ෂ්‍යයේ පිහිටීම යන දෙකම අගය තුළ කේතනය කර ඇත.

decimalයනු පාවෙන දශම ස්ථානය වර්ගය . වෙනත් වචන වලින් කිවහොත්, ඔවුන් මෙවැනි සංඛ්‍යාවක් නියෝජනය කරයි:

12345.65789

නැවතත්, දශම ලක්ෂයේ අංකය සහ පිහිටීම යන දෙකම අගය තුළ කේතනය කර ඇත - decimalඑය ස්ථාවර ලක්ෂ්‍ය වර්ගයක් වෙනුවට පාවෙන ලක්ෂ්‍ය වර්ගයක් බවට පත් කරයි .

සැලකිල්ලට ගත යුතු වැදගත්ම දෙය නම් පූර්ණ සංඛ්‍යා නොවන දේ දශම ස්වරූපයෙන් නිරූපණය කිරීමට මිනිසුන් පුරුදු වී ඇති අතර දශම නිරූපණයන්හි නිශ්චිත ප්‍රති results ල අපේක්ෂා කිරීමයි; ද්විමය පාවෙන ලක්ෂ්‍යයේ සියලුම දශම සංඛ්‍යා හරියටම නිරූපණය කළ නොහැක - උදාහරණයක් ලෙස - 0.1, එබැවින් ඔබ ද්විමය පාවෙන ලක්ෂ්‍ය අගයක් භාවිතා කරන්නේ නම් ඔබට ඇත්ත වශයෙන්ම 0.1 ට ආසන්න අගයක් ලැබෙනු ඇත. පාවෙන දශම ලක්ෂ්‍යයක් භාවිතා කරන විට ඔබට තවමත් ආසන්න අගයන් ලැබෙනු ඇත - උදාහරණයක් ලෙස 1 න් 3 න් බෙදීමේ ප්‍රති result ලය හරියටම නිරූපණය කළ නොහැක.

විට භාවිතා කළ යුතු දේ සඳහා:

  • “ස්වාභාවිකවම නිශ්චිත දශම” වන අගයන් සඳහා භාවිතා කිරීම හොඳයි decimal. මෙය සාමාන්‍යයෙන් මිනිසුන් විසින් නිර්මාණය කරන ලද ඕනෑම සංකල්පයකට සුදුසු ය: මූල්‍යමය අගයන් වඩාත්ම පැහැදිලි උදාහරණය වන නමුත් අනෙක් ඒවා ද තිබේ. උදාහරණයක් ලෙස කිමිදුම්කරුවන්ට හෝ අයිස් ස්කේටරයට ලබා දී ඇති ලකුණු සලකා බලන්න.

  • කෙසේ හෝ හරියටම මැනිය නොහැකි සොබාදහමේ වඩා පුරාවස්තු වන අගයන් සඳහා , float/ doubleවඩාත් යෝග්‍ය වේ. උදාහරණයක් ලෙස, විද්‍යාත්මක දත්ත සාමාන්‍යයෙන් මෙම ස්වරූපයෙන් නිරූපණය කෙරේ. මෙන්න, මුල් අගයන් ආරම්භ කිරීම සඳහා "දශම නිරවද්‍ය" නොවනු ඇත, එබැවින් අපේක්ෂිත ප්‍රති results ල "දශම නිරවද්‍යතාව" පවත්වා ගැනීම වැදගත් නොවේ. පාවෙන ද්විමය ලක්ෂ්‍ය වර්ග දශමයට වඩා වැඩ කිරීමට වේගවත්ය.


58
float/ doubleසාමාන්යයෙන් අංක නියෝජනය කරන්නේ නැහැ 101.101110සාමාන්යයෙන් ඒ වගේ දෙයක් ලෙස නියෝජනය වේ, 1101010 * 2^(01010010)ක නිපුනයා -
Mingwei සාමුවෙල්

79
Az හාසාර්ඩ්: පිළිතුරේ “සහ ද්විමය ලක්ෂ්‍යයේ පිහිටීම” යන්නෙහි තේරුම එයයි.
ජෝන් ස්කීට්

112
මට පුදුමයි, එය දැනටමත් පවසා නැති අතර, floatඑය සී # අන්වර්ථ පදය වන අතර එය .නෙට් වර්ගයක් නොවේ. එය System.Single.. singleසහ doubleපාවෙන ද්විමය ලක්ෂ්‍ය වර්ග වේ.
බ්‍රෙට් කැස්වෙල්

54
KBKSpurgeon: හොඳයි, සෑම දෙයක්ම ද්විමය වර්ගයක් යැයි ඔබට පැවසිය හැකි ආකාරයටම , එම අවස්ථාවේදී එය තරමක් නිෂ් less ල අර්ථ දැක්වීමක් බවට පත්වේ. දශම යනු දශම වර්ගයකි, එය පූර්ණ සංඛ්‍යාවක් සහ පරිමාණයක් ලෙස නිරූපණය වන අතර, ප්‍රති result ලය වැදගත් සහ * 10 ^ පරිමාණය වන අතර, පාවෙන සහ ද්විත්ව වැදගත් සහ * 2 ^ පරිමාණය වේ. ඔබ දශමයෙන් ලියා ඇති අංකයක් ගෙන, වැදගත්කම සහ පරිමාණය සකස් කිරීම සඳහා ඔබට පූර්ණ සංඛ්‍යාවක් ලැබී ඇති පරිදි දශම ලක්ෂ්‍යය දකුණට ගෙනයන්න. පාවෙන / දෙගුණයක් සඳහා ඔබ ද්විමය වශයෙන් ලියා ඇති අංකයකින් ආරම්භ කරනු ඇත.
ජෝන් ස්කීට්

21
තවත් වෙනසක්: පාවෙන 32-බිට්; ද්විත්ව 64-බිට්; සහ දශම 128-බිට්.
ඩේවිඩ්

1078

නිරවද්යතාව ප්රධාන වෙනසයි.

පාවෙන - ඉලක්කම් 7 (බිට් 32)

ද්විත්ව -15-16 ඉලක්කම් (බිට් 64)

දශම -28-29 සැලකිය යුතු ඉලක්කම් (බිට් 128)

දශම වලට වඩා වැඩි නිරවද්‍යතාවයක් ඇති අතර සාමාන්‍යයෙන් ඉහළ නිරවද්‍යතාවයක් අවශ්‍ය මූල්‍ය යෙදුම් තුළ භාවිතා වේ. ද්විත්ව / පාවීමට වඩා දශමයන් (සමහර පරීක්ෂණ වලදී 20X ගුණයක් දක්වා) මන්දගාමී වේ.

වාත්තු කිරීමකින් තොරව දශම හා පාවෙන / ද්විත්ව සංසන්දනය කළ නොහැකි අතර පාවෙන සහ ද්විත්ව විය හැකිය. දශම සංඛ්‍යා මඟින් කේතීකරණ හෝ පසුපස ශුන්‍යයන්ට ඉඩ ලබා දේ.

float flt = 1F/3;
double dbl = 1D/3;
decimal dcm = 1M/3;
Console.WriteLine("float: {0} double: {1} decimal: {2}", flt, dbl, dcm);

ප්‍රති ult ලය:

float: 0.3333333  
double: 0.333333333333333  
decimal: 0.3333333333333333333333333333

65
CThecrocodilehunter: සමාවෙන්න, නමුත් නැත. දශම අංකයෙන් නිරූපණය කළ හැකි සියලුම සංඛ්‍යා දශමයට නිරූපණය කළ හැකි නමුත් උදාහරණයක් ලෙස 1/3 නොවේ. 1.0m / 3.0m 0.33333333 දක්වා තක්සේරු කරනු ඇත ... විශාල නමුත් සීමිත 3s අවසානයේ. එය 3 න් ගුණ කිරීමෙන් නිශ්චිත 1.0 ක් නොලැබේ.
එරික් පී.

50
CThecrocodilehunter: මම හිතන්නේ ඔබ නිරවද්‍යතාව සහ නිරවද්‍යතාව අවුල් කරනවා. මෙම සන්දර්භය තුළ ඒවා වෙනස් දේවල් ය. නිරවද්‍යතාවය යනු සංඛ්‍යාවක් නිරූපණය කිරීම සඳහා ඇති ඉලක්කම් ගණනයි. වඩාත් නිරවද්යතාව, ඔබ වට කිරීමට අවශ්ය අඩු. කිසිදු දත්ත වර්ගයකට අසීමිත නිරවද්‍යතාවයක් නොමැත.
ඉග්බි ලාර්ජ්මන්

13
CThecrocodilehunter: ඔබ උපකල්පනය කරන්නේ මැනිය යුතු වටිනාකම හරියටම යැයි 0.1 - සැබෑ ලෝකයේ එය කලාතුරකිනි! ඕනෑම සීමිත ගබඩා ආකෘතියක් මඟින් අසීමිත අගයන් සංඛ්‍යාවක් සීමිත බිට් රටා ගණනකට සම්බන්ධ කරයි. නිදසුනක් ලෙස, floatගැටෙනු ඇති 0.1අතර 0.1 + 1e-8, decimalගැටෙන 0.1අතර 0.1 + 1e-29. ෂුවර්, දෙන ලද පරාසය තුළ , යම් යම් වටිනාකම් නිරවද්යතාව ශුන්ය වීම (උදා: ඕනෑම ආකෘතියෙන් නියෝජනය කළ හැකි floatනිවැරදි ශුන්ය අහිමි 1.6e7 කිරීමට ඕනෑම නිඛිල දක්වා ගබඩා කල හැක) - නමුත් තවමත් නෑ අනන්ත නිරවද්යතාව.
ඩැනියෙල් ප්‍රයිඩන්

27
CThecrocodilehunter: ඔබට මගේ අදහස මඟ හැරුණි. 0.1වන විශේෂ වටිනාකමින් ! 0.1"වඩා හොඳ" බවට පත් කරන එකම දෙය වන්නේ මිනිසුන් 10 වන පදනමට කැමති 0.10000001නිසාය . තවද වටිනාකමක් සහිතව වුවද , ඔබ එකම ආකාරයකින් අගයන් දෙකක් ආරම්භ කළහොත් ඒවා දෙකම එකම අගයක් වනු ඇත. එය හරියටම එම අගය හරියටම නොවනු ඇත - එය හරියටම නිරූපණය කළ හැකි ආසන්නතම අගය වනු ඇත . නිසැකවම, ද්විමය පාවෙන සමඟ , නමුත් දශම පාවෙන සමඟ . වත් වේ හොඳින් නිවැරදි. float0.1 0.10.1float(1.0 / 10) * 10 != 1.0(1.0 / 3) * 3 != 1.0
ඩැනියෙල් ප්‍රයිඩන්

16
CThecrocodilehunter: ඔබට තවමත් තේරෙන්නේ නැහැ. මෙය තවදුරටත් පැහැදිලිව පවසන්නේ කෙසේදැයි මම නොදනිමි: සී හි, ඔබ එසේ කරන්නේ double a = 0.1; double b = 0.1;නම් a == b එය සත්‍ය වනු ඇත . එය හුදෙක් බව ය aසහ bඇත යන දෙකම ද නො සමාන 0.1. C # හි, ඔබ එසේ කරන්නේ decimal a = 1.0m / 3.0m; decimal b = 1.0m / 3.0m;නම් a == bඑය ද සත්‍ය වනු ඇත. නමුත් එම අවස්ථාවේ දී, වත් කිරීම aහෝ bකරනු ඇත හරියටම සමාන 1/3- ඔවුන් දෙදෙනාම සමාන වනු ඇත 0.3333.... දී දෙදෙනාම නඩු, සමහර නිරවද්යතාව නියෝජනය හේතුවෙන් අහිමි කර ඇත. ඔබ මුරණ්ඩු ලෙස පවසන්නේ එය decimal“අසීමිත” නිරවද්‍යතාවයක් ඇති අතර එය අසත්‍යයකි .
ඩැනියෙල් ප්‍රයිඩන්

85

වටකුරුකරණයට සාපේක්ෂව නොඉවසන නිරවද්‍යතාව අවශ්‍ය වන මූල්‍ය ගණනය කිරීම් සඳහා දශම ව්‍යුහය තදින්ම සකසා ඇත. විද්‍යාත්මක යෙදුම් සඳහා දශම ප්‍රමාණවත් නොවේ, කෙසේ වෙතත්, හේතු කිහිපයක් නිසා:

  • භෞතික ගැටලුවේ ප්‍රායෝගික සීමාවන් හෝ කෞතුක වස්තු මැනීම නිසා බොහෝ විද්‍යාත්මක ගණනය කිරීම් වලදී නිශ්චිත නිරවද්‍යතාවයක් නැතිවීම පිළිගත හැකිය. මූල්‍යමය වශයෙන් නිරවද්‍යතාව නැතිවීම පිළිගත නොහැකිය.
  • බොහෝ මෙහෙයුම් සඳහා දශම බොහෝ (බොහෝ) මන්දගාමී වන අතර බොහෝ දුරට පාවෙන ලක්ෂ්‍ය මෙහෙයුම් ද්විමය වශයෙන් සිදු කෙරෙන අතර දශම දේවල් 10 වන පාදයේ සිදු කරයි (එනම් පාවෙන හා යුගල හසුරුවනු ලබන්නේ එම්එම්එක්ස් / එස්එස්ඊ වැනි FPU දෘඩාංග විසිනි. මෘදුකාංගයෙන් දශම ගණනය කරනු ලැබේ).
  • නිරවද්‍යතාවයේ වැඩි ඉලක්කම් සඳහා සහය දක්වුවද, දශමයට දෙගුණයකට වඩා පිළිගත නොහැකි තරම් කුඩා අගයක් ඇත. එබැවින් බොහෝ විද්‍යාත්මක අගයන් නිරූපණය කිරීමට දශම භාවිතා කළ නොහැක.

5
ඔබ මූල්‍ය ගණනය කිරීම් කරන්නේ නම්, ඔබට නියත වශයෙන්ම ඔබේම දත්ත කට්ටල රෝල් කිරීමට හෝ ඔබේ නිශ්චිත අවශ්‍යතාවන්ට ගැලපෙන හොඳ පුස්තකාලයක් සොයා ගැනීමට සිදුවේ. මූල්‍ය පසුබිමක නිරවද්‍යතාවය (මානව) ප්‍රමිති ආයතන විසින් නිර්වචනය කර ඇති අතර ගණනය කිරීම් සිදු කරන්නේ කෙසේද යන්න පිළිබඳ නිශ්චිත දේශීයකරණය කළ (කාලය හා භූගෝලීය වශයෙන්) නීති ඇත. නිවැරදි වටය වැනි දේවල් .Net හි සරල සංඛ්‍යාත්මක දත්ත කාණ්ඩවල ග්‍රහණය කර නොගනී. ගණනය කිරීම් කිරීමට ඇති හැකියාව ප්‍රහේලිකාවෙහි ඉතා කුඩා කොටසක් පමණි.
ජේම්ස් මුවර්

77
+---------+----------------+---------+----------+---------------------------------------------+
| C#      | .Net Framework | Signed? | Bytes    | Possible Values                             |
| Type    | (System) type  |         | Occupied |                                             |
+---------+----------------+---------+----------+---------------------------------------------+
| sbyte   | System.Sbyte   | Yes     | 1        | -128 to 127                                 |
| short   | System.Int16   | Yes     | 2        | -32768 to 32767                             |
| int     | System.Int32   | Yes     | 4        | -2147483648 to 2147483647                   |
| long    | System.Int64   | Yes     | 8        | -9223372036854775808 to 9223372036854775807 |
| byte    | System.Byte    | No      | 1        | 0 to 255                                    |
| ushort  | System.Uint16  | No      | 2        | 0 to 65535                                  |
| uint    | System.UInt32  | No      | 4        | 0 to 4294967295                             |
| ulong   | System.Uint64  | No      | 8        | 0 to 18446744073709551615                   |
| float   | System.Single  | Yes     | 4        | Approximately ±1.5 x 10-45 to ±3.4 x 1038   |
|         |                |         |          |  with 7 significant figures                 |
| double  | System.Double  | Yes     | 8        | Approximately ±5.0 x 10-324 to ±1.7 x 10308 |
|         |                |         |          |  with 15 or 16 significant figures          |
| decimal | System.Decimal | Yes     | 12       | Approximately ±1.0 x 10-28 to ±7.9 x 1028   |
|         |                |         |          |  with 28 or 29 significant figures          |
| char    | System.Char    | N/A     | 2        | Any Unicode character (16 bit)              |
| bool    | System.Boolean | N/A     | 1 / 2    | true or false                               |
+---------+----------------+---------+----------+---------------------------------------------+

වැඩි විස්තර සඳහා මෙහි බලන්න .


6
ඔබ විශාලතම වෙනස අතහැර දමා ඇත, එය දශම වර්ගය සඳහා භාවිතා කරන පදනම වේ (දශම 10 වන පදනම ලෙස ගබඩා කර ඇත, ලැයිස්තුගත කර ඇති අනෙකුත් සියලුම සංඛ්‍යා වර්ග පදනම් 2 වේ).
BrainSlugs83

1
තනි සහ ද්විත්ව සඳහා වන අගය පරාසයන් ඉහත රූපයේ හෝ ප්‍රභව සංසදයේ නිවැරදිව නිරූපණය කර නොමැත. අපට මෙහි පෙළ පහසුවෙන් පිටපත් කළ නොහැකි බැවින්, කැරට් අක්‍ෂරය භාවිතා කරන්න: තනි 10 ^ -45 සහ 10 ^ 38 විය යුතු අතර ද්විත්ව 10 ^ -324 සහ 10 ^ 308 විය යුතුය. එසේම, MSDN හි පාවෙන -3.4x10 ^ 38 සිට + 3.4x10 ^ 38 දක්වා පරාසයක් ඇත. System.Single සහ System සඳහා MSDN සොයන්න. සම්බන්ධක වෙනස්වීම් වලදී දෙගුණ කරන්න. තනි: msdn.microsoft.com/en-us/library/b1e65aza.aspx ද්විත්ව: msdn.microsoft.com/en-us/library/678hzkk9.aspx
deegee

3
දශම බිටු 128 යි ... එයින් අදහස් කරන්නේ එය බයිට් 16 ක් නොව 12 ක් බවයි
පරිශීලක 1477332

52

වෙනත් පිළිතුරු සහ අදහස් වලින් දැනටමත් පිළිතුරු දී ඇති හොඳ (හා නරක) තොරතුරු ටොන් ගණනක් මම නැවත නොකියමි, නමුත් මම ඔබේ පසු විපරම් ප්‍රශ්නයට ඉඟියක් සමඟ පිළිතුරු දෙන්නෙමි:

කවුරුහරි මේවායින් එකක් භාවිතා කරන්නේ කවදාද?

ගණන් කළ අගයන් සඳහා දශම භාවිතා කරන්න

මනින ලද අගයන් සඳහා පාවෙන / ද්විත්ව භාවිතා කරන්න

උදාහරණ කිහිපයක්:

  • මුදල් (අපි මුදල් ගණන් කරනවාද නැත්නම් මුදල් මැන බලනවාද?)

  • දුර (අපි දුර ගණන් කරනවාද නැත්නම් දුර මැන බලනවාද? *)

  • ලකුණු (අපි ලකුණු ගණන් කරනවාද නැත්නම් ලකුණු මනිනවාද?)

අපි සෑම විටම මුදල් ගණන් කරන අතර එය කිසි විටෙකත් මැනිය යුතු නැත. අපි සාමාන්‍යයෙන් දුර මැනීම. අපි බොහෝ විට ලකුණු ගණන් කරමු.

* සමහර අවස්ථාවලදී, මම නාමික දුර ලෙස හඳුන්වන දෙය , ඇත්ත වශයෙන්ම අපට දුර ගණනය කිරීමට අවශ්‍ය විය හැකිය. උදාහරණයක් ලෙස, සමහර විට අපි නගර වලට දුර පෙන්වන රට සං signs ා සමඟ කටයුතු කරන අතර, එම දුර කිසි විටෙකත් දශම සංඛ්‍යා එකකට වඩා (xxx.x km) නොමැති බව අපි දනිමු.


1
මෙම පිළිතුරට මම ඇත්තෙන්ම කැමතියි, විශේෂයෙන් "අපි මුදල් ගණන් කරනවාද නැත්නම් මැන බලනවාද?" කෙසේ වෙතත්, මුදල් හැරුණු විට, හුදෙක් පූර්ණ සංඛ්‍යාවක් නොවන “ගණන් කළ” කිසිවක් ගැන මට සිතිය නොහැකිය. ද්විත්වයට සැලකිය යුතු සංඛ්‍යා කිහිපයක් ඇති බැවින් දශම භාවිතා කරන සමහර යෙදුම් මම දැක ඇත්තෙමි . වෙනත් වචන වලින් කිවහොත්, C # සතුව සිව් වර්ගයක් en.wikipedia.org/wiki/Quadruple-precision_floating-point_format
ජෝන් හෙන්කල්

48

float නිරවද්යතාවයේ ඉලක්කම් 7 ක්

double නිරවද්‍යතාවයේ ඉලක්කම් 15 ක් පමණ ඇත

decimal නිරවද්‍යතාවයේ ඉලක්කම් 28 ක් පමණ ඇත

ඔබට වඩා හොඳ නිරවද්‍යතාවයක් අවශ්‍ය නම්, පාවෙන වෙනුවට දෙගුණයක් භාවිතා කරන්න. නූතන CPU වල දත්ත වර්ග දෙකම එකම ක්‍රියාකාරීත්වයක් ඇත. පාවෙන භාවිතා කිරීමේ එකම පරමාර්ථය වන්නේ ඔවුන් අඩු ඉඩ ප්‍රමාණයක් ගැනීමයි. ප්‍රායෝගිකව වැදගත් වන්නේ ඔබ ඒවායින් බොහොමයක් ලබාගෙන ඇත්නම් පමණි.

මෙය සිත්ගන්නා සුළු බව මට පෙනී ගියේය. පාවෙන ලක්ෂ්‍ය අංක ගණිතය පිළිබඳව සෑම පරිගණක විද්‍යා ist යෙක්ම දැනගත යුතු දේ


1
Og රොජර්ලිප්ස්කොම්බ්: doubleබිට් 32 ට වඩා විශාල සංඛ්‍යාවක් නොමැති, සහ doubleඑය භාවිතා කරන්නේ බිට් 53 ක පූර්ණ සංඛ්‍යා වර්ගයක් ලෙස (උදා. මුළු සතයක් හෝ සතයක සියගණනක්). වර්තමානයේ එවැනි දේ සඳහා එතරම් ප්‍රයෝජනයක් නැත, නමුත් බොහෝ භාෂාවන් ද්වි-නිරවද්‍ය පාවෙන ලක්ෂ්‍ය අගයන් භාවිතා කිරීමේ හැකියාව ලබා ගත්තේ ඒවා බිට් 64 (හෝ සමහර අවස්ථාවල 32-බිට්!) පූර්ණ සංඛ්‍යා ගණිතය ලබා ගැනීමට බොහෝ කලකට පෙරය.
සුපර් කැට්

1
ඔබේ පිළිතුරෙන් ගම්‍ය වන්නේ මෙම දත්ත වර්ග අතර ඇති එකම වෙනස නිරවද්‍යතාවය බවයි. ද්විමය පාවෙන ලක්ෂ්‍ය අංක ගණිතය සාමාන්‍යයෙන් දෘඩාංග FPU තුළ ක්‍රියාත්මක වන බැවින් කාර්ය සාධනය සැලකිය යුතු වෙනසක් වේ. සමහර යෙදුම් සඳහා මෙය අනපේක්ෂිත විය හැකි නමුත් අනෙක් ඒවා සඳහා ඉතා වැදගත් වේ.
යාත්‍රා කරන්න

6
ගිණුම්කරණ යෙදුම්වල up සුපර්කැට් ද්විත්ව කිසි විටෙකත් සුදුසු නොවේ. ද්විත්වයට දළ වශයෙන් දශම අගයන් පමණක් කළ හැකි නිසා (එහි නිරවද්‍යතාවයේ පරාසය තුළ පවා). මෙයට හේතුව ද්වි-අගයන් පාදක -2 (ද්විමය) කේන්ද්‍රීය ආකෘතියකින් ගබඩා කිරීමයි.
BrainSlugs83

2
@ BrainSlugs83: සම්පූර්ණ සංඛ්‍යා නොවන ප්‍රමාණ රඳවා තබා ගැනීම සඳහා පාවෙන ලක්ෂ්‍ය වර්ග භාවිතා කිරීම නුසුදුසු වනු ඇත, නමුත් භාෂාවන්ට ඒවායේ පූර්ණ සංඛ්‍යා වර්ග වලට වඩා විශාල පූර්ණ සංඛ්‍යා අගයන් හරියටම නිරූපණය කළ හැකි පාවෙන ලක්ෂ්‍ය වර්ග තිබීම histor තිහාසිකව ඉතා සුලභ විය. . සමහර විට වඩාත්ම ආන්තික උදාහරණය ටර්බෝ -87 වන අතර ඒවායේ පූර්ණ සංඛ්‍යා -32768 සිට +32767 දක්වා සීමා කර ඇත, නමුත් RealIIRC 1.8E + 19 දක්වා අගයන් ඒකක නිරවද්‍යතාවයෙන් නිරූපණය කළ හැකිය. ගිණුම්කරණ යෙදුමකට Realවඩා
සතයක්ම

1
... එයට බිටු 16 ක අගයක් භාවිතා කරමින් බහු නිරවද්‍ය ගණිතයක් කිරීමට උත්සාහ කිරීම. වෙනත් බොහෝ භාෂාවලට වෙනස එතරම් ආන්තික නොවීය, නමුත් 4E9 ඉක්මවා ගිය කිසිදු පූර්ණ සංඛ්‍යාවක් doubleනොතිබීම සහ 9E15 දක්වා ඒකක නිරවද්‍යතාවයකින් යුත් වර්ගයක් නොතිබීම දිගු කලක් තිස්සේ භාෂාවන්හි සුලභ ය. ලබා ගත හැකි විශාලතම නිඛිල වර්ගයට වඩා විශාල සංඛ්‍යාවක් ගබඩා කිරීමට යමෙකුට අවශ්‍ය නම්, doubleබහු නිරවද්‍යතා ගණිතය විග්‍රහ කිරීමට උත්සාහ කරනවාට වඩා සරල හා කාර්යක්ෂම කිරීම සුදුසුය. විශේෂයෙන් 16x16-> 32 හෝ ක්‍රියාවට නැංවීමට ප්‍රොසෙසරයන්ට උපදෙස් ඇති විට. ..
සුපර් කැට්

36

කිසිවෙකු ඒ ගැන සඳහන් කර නැත

පෙරනිමි සැකසුම් වලදී, පාවෙන (System.Single) සහ යුගල (System.Double) කිසි විටෙකත් පිටාර ගැලීම් පරික්ෂා නොකරන අතර දශම (System.Decimal) සෑම විටම පිටාර ගැලීම් පරීක්ෂා කිරීම භාවිතා කරයි.

මම අදහස් කළේ

decimal myNumber = decimal.MaxValue;
myNumber += 1;

OverflowException විසි කරයි .

නමුත් මේවා එසේ නොවේ:

float myNumber = float.MaxValue;
myNumber += 1;

සහ

double myNumber = double.MaxValue;
myNumber += 1;

1
float.MaxValue+1 == float.MaxValue, හරියටම decimal.MaxValue+0.1D == decimal.MaxValue. සමහර විට ඔබ අදහස් කළේ එවැනි float.MaxValue*2දෙයක්ද?
සුපර් කැට්

up සුපර්කාර් නමුත් decimal.MaxValue + 1 == decimal.MaxValue
GorkemHalulu

upsupercar decimal.MaxValue + 0.1m == decimal.MaxValue ok
GorkemHalulu

1
මෙම System.Decimalඑය මුළු ඒකක වෙනස හඳුනා ගැනීමට නොහැකි බවට පත් කිරිමට පෙර ව්යතිරේකයක් විසි කිරීම, නමුත් අයදුම්පතක් උදා: ඩොලර් ශත සමඟ කටයුතු කිරීමට නියමිත ව තිබේ නම්, ඒ ප්රමාද විය හැක.
සුපර් කැට්

28
  1. සම්පාදනය හා ධාවන වේලාව යන දෙකෙහිම ව්‍යතිරේකයකින් තොරව ද්විත්ව හා පාවෙන සංඛ්‍යා පූර්ණ ශුන්‍යයෙන් බෙදිය හැකිය.
  2. දශම සංඛ්‍යා පූර්ණ ශුන්‍යයෙන් බෙදිය නොහැක. ඔබ එය කරන්නේ නම් සම්පාදනය සැමවිටම අසාර්ථක වනු ඇත.

6
ඔවුන්ට විශ්වාසයි! බෑවුම් ගණනය කිරීමේදී සිරස් රේඛා හඳුනා ගැනීම සඳහා එය ඉතා ප්‍රයෝජනවත් වන අනන්තය, සෘණ අනන්තය, සහ NaN (අංකයක් නොවේ) වැනි "මැජික්" අගයන් කිහිපයක් ද ඔවුන් සතුව ඇත ... තවද, ඇමතුම් පාවීම අතර තීරණය කිරීමට ඔබට අවශ්‍ය නම් .ට්‍රයිපාර්ස්, ඩබල්.ට්‍රයිපාර්ස් සහ දශම , නමුත් දශම එසේ නොවේ.
BrainSlugs83

සම්පාදනය අසමත් වන්නේ ඔබ වචනානුසාරයෙන් decimalශුන්‍යයෙන් (CS0020) බෙදීමට උත්සාහ කළහොත් පමණි . කෙසේ වෙතත්, ධාවන කාල දශම අගය ශුන්‍යයෙන් බෙදන්නේ නම්, ඔබට ව්‍යතිරේකයක් ලැබෙනුයේ සම්පාදක දෝෂයක් නොවේ.
ඩ්‍රූ නොක්ස්

@ BrainSlugs83 කෙසේ වෙතත්, සන්දර්භය අනුව "අනන්තය" හෝ "NaN" විග්‍රහ කිරීමට ඔබට අවශ්‍ය නොවනු ඇත. සංවර්ධකයා ප්‍රමාණවත් නොවන්නේ නම් පරිශීලක ආදානය සඳහා හොඳ සූරාකෑමක් සේ පෙනේ.
ශීත

28

පූර්ණ සංඛ්‍යා, සඳහන් කළ පරිදි, සම්පූර්ණ සංඛ්‍යා වේ. .7, .42, සහ .007 වැනි දෙයක් ඔවුන්ට ගබඩා කළ නොහැක. සම්පූර්ණ සංඛ්‍යා නොවන සංඛ්‍යා ගබඩා කිරීමට ඔබට අවශ්‍ය නම්, ඔබට වෙනත් ආකාරයේ විචල්‍යයක් අවශ්‍ය වේ. ඔබට ද්විත්ව වර්ගය හෝ පාවෙන වර්ගය භාවිතා කළ හැකිය. ඔබ මෙම වර්ගවල විචල්‍යයන් එකම ආකාරයකින් සකසා ඇත: වචනය භාවිතා කරනවා වෙනුවට int, ඔබ ටයිප් කරන්න doubleහෝ float. මෙවැනි:

float myFloat;
double myDouble;

( float"පාවෙන ලක්ෂ්‍යය" සඳහා කෙටි වන අතර, එයින් අදහස් කරන්නේ ලක්ෂ්‍යයක් සහිත අංකයක් අවසානයේ ඇති බවයි.)

මේ දෙක අතර වෙනස ඇත්තේ ඔවුන්ට රඳවා ගත හැකි සංඛ්‍යා ප්‍රමාණයෙනි. මක්නිසාද යත් float, ඔබේ අංකයේ ඉලක්කම් 7 ක් දක්වා තිබිය හැකිය. සඳහා doubles, ඔබ ඉලක්කම් 16 දක්වා විය හැකිය. වඩාත් නිවැරදිව කිවහොත්, නිල ප්‍රමාණය මෙන්න:

float:  1.5 × 10^-45  to 3.4 × 10^38  
double: 5.0 × 10^-324 to 1.7 × 10^308

float32-බිට් අංකයක් වන අතර doubleඑය 64-බිට් අංකයකි.

කේතය ලබා ගැනීමට ඔබගේ නව බොත්තම දෙවරක් ක්ලික් කරන්න. ඔබගේ බොත්තම් කේතයට පහත පේළි තුන එක් කරන්න:

double myDouble;
myDouble = 0.007;
MessageBox.Show(myDouble.ToString());

ඔබගේ වැඩසටහන නවතා කේතීකරණ කවුළුව වෙත ආපසු යන්න. මෙම රේඛාව වෙනස් කරන්න:

myDouble = 0.007;
myDouble = 12345678.1234567;

ඔබේ වැඩසටහන ක්‍රියාත්මක කර ඔබේ ද්විත්ව බොත්තම ක්ලික් කරන්න. පණිවිඩ කොටුව නිවැරදිව අංකය පෙන්වයි. කෙසේ වෙතත් අවසානයේ තවත් අංකයක් එක් කරන්න, එවිට C # නැවත ඉහළට හෝ පහළට එනු ඇත. සදාචාරය නම් ඔබට නිරවද්‍යතාවය අවශ්‍ය නම් වටයෑමෙන් ප්‍රවේශම් වන්න!


2
ඔබ සඳහන් කළ “යමක් යොමු කරන්න” යන්න සාමාන්‍යයෙන් හැඳින්වෙන්නේ සංඛ්‍යාවක භාගික කොටස ලෙස ය. “පාවෙන ලක්ෂ්‍යය” යන්නෙහි අර්ථය “ලක්ෂ්‍යයක් අවසානයේ යමක් ඇති අංකයක්” නොවේ; නමුත් ඒ වෙනුවට “පාවෙන ලක්ෂ්‍යය” සංඛ්‍යා වර්ගය වෙන්කර දක්වයි, එය “ස්ථාවර ලක්ෂ්‍ය” සංඛ්‍යාවට වඩා වෙනස් වේ (එමඟින් භාගික අගයක් ද ගබඩා කළ හැකිය); වෙනස වන්නේ නිරවද්‍යතාවය ස්ථාවරද, නැතහොත් පාවෙනද යන්නයි. - පාවෙන ලක්ෂ්‍ය සංඛ්‍යා මඟින් ඔබට නිරවද්‍යතාවයේ පිරිවැය අනුව වඩා විශාල ගතික අගයන් (අවම සහ උපරිම) ලබා දෙන අතර ස්ථාවර ලක්ෂ්‍ය සංඛ්‍යා මඟින් පරාසයේ පිරිවැය අනුව නියත නිරවද්‍යතාවයක් ලබා දේ.
BrainSlugs83

16
  • පාවෙන: ± 1.5 x 10 ^ -45 සිට ± 3.4 x 10 ^ 38 (~ 7 සැලකිය යුතු සංඛ්‍යා
  • ද්විත්ව: ± 5.0 x 10 ^ -324 සිට ± 1.7 x 10 ^ 308 (15-16 සැලකිය යුතු සංඛ්‍යා)
  • දශම: ± 1.0 x 10 ^ -28 සිට ± 7.9 x 10 ^ 28 (සැලකිය යුතු සංඛ්‍යා 28-29)

9
වෙනස නිරවද්‍යතාවයට වඩා වැඩි ය. - decimalඇත්ත වශයෙන්ම දශම ආකෘතියෙන් ගබඩා කර ඇත (2 වන පදනමට සාපේක්ෂව; එබැවින් සංඛ්‍යාත්මක පද්ධති දෙක අතර පරිවර්තනය හේතුවෙන් එය සංඛ්‍යා හෝ වටකුරු නැති නොවේ); මීට අමතරව, decimalNaN, -0,, හෝ -∞ වැනි විශේෂ අගයන් පිළිබඳ සංකල්පයක් නොමැත.
BrainSlugs83

13

මෙය මට සිත්ගන්නා සුළු නූලක් වී ඇත, අද මෙන්, අප සතුව ඇත්තේ ඉතා කුඩා දෝෂයකි, decimala ට වඩා අඩු නිරවද්‍යතාවයක් තිබීම සම්බන්ධයෙන් float.

අපගේ C # කේතයේ, අපි එක්සෙල් පැතුරුම්පතකින් සංඛ්‍යාත්මක අගයන් කියවමින් ඒවා a බවට පරිවර්තනය කර SQL සේවාදායක දත්ත ගබඩාවකට සුරැකීම සඳහා decimalමෙය decimalනැවත සේවාවක් වෙත යවමු .

Microsoft.Office.Interop.Excel.Range cell = 
object cellValue = cell.Value2;
if (cellValue != null)
{
    decimal value = 0;
    Decimal.TryParse(cellValue.ToString(), out value);
}

දැන්, අපගේ එක්සෙල් අගයන් සියල්ලම පාහේ මෙය ලස්සනට ක්‍රියාත්මක විය. නමුත් සමහර අයට ඉතා කුඩා එක්සෙල් අගයන්, decimal.TryParseනැතිවූ අගය සම්පූර්ණයෙන්ම භාවිතා කිරීම. එවැනි එක් උදාහරණයක්

  • cellValue = 0.00006317592

  • Decimal.TryParse (cellValue.ToString (), පිටත අගය); // නැවත 0 වනු ඇත

විකාර සහගත ලෙස විසඳුම වූයේ එක්සෙල් අගයන් doubleපළමුව, පසුව a බවට පරිවර්තනය කිරීමයි decimal.

Microsoft.Office.Interop.Excel.Range cell = 
object cellValue = cell.Value2;
if (cellValue != null)
{
    double valueDouble = 0;
    double.TryParse(cellValue.ToString(), out valueDouble);
    decimal value = (decimal) valueDouble;
    
}

doubleA ට වඩා අඩු නිරවද්‍යතාවයක් තිබුණද decimal, මෙය සැබවින්ම සහතික කරන ලද කුඩා සංඛ්‍යාවක් තවමත් හඳුනා ගනු ඇත. කිසියම් හේතුවක් නිසා, double.TryParseඇත්ත වශයෙන්ම එවැනි කුඩා සංඛ්‍යා ලබා ගැනීමට හැකි වූ අතර decimal.TryParseඒවා ශුන්‍යයට සකසනු ඇත.

අමුතුයි. හරිම අමුතුයි.


3
කුතුහලය දනවන අයුරින්, සෛල අගයෙහි වටිනාකම කුමක්ද? ටෝස්ට්‍රිං ()? Decimal.TryParse ("0.00006317592", out val) වැඩ කරන බව පෙනේ ...
micahtan

11
-1 මාව වැරදියට තේරුම් ගන්න එපා, ඇත්ත නම්, එය ඉතා සිත්ගන්නා සුළු නමුත් මෙය වෙනම ප්‍රශ්නයක්, එය නිසැකවම මෙම ප්‍රශ්නයට පිළිතුරක් නොවේ.
වෙස්ටන්

2
සමහර විට එක්සෙල් සෛලය දෙගුණයක් සහ ටොස්ට්‍රිං () අගය "6.31759E-05" නිසා දශමයට අයත් විය හැක. මම ඔට්ටු අල්ලනවා ඔබ දශමයේ ප්‍රතිලාභ අගය පරීක්ෂා කළා නම්. ට්‍රයිපාර්ස් () එය වැරදියි.
සර්ජියෝ

2
@ වෙස්ටන් පිළිතුරු බොහෝ විට ඔවුන්ට මඟ හැරුණු සූක්ෂ්ම පුරවා වෙනත් පිළිතුරු වලට අනුපූරක වේ. මෙම පිළිතුර මඟින් විග්‍රහ කිරීමෙහි වෙනසක් ඉස්මතු කරයි. එය බොහෝ දුරට ප්‍රශ්නයට පිළිතුරකි!
රොබිනෝ

1
එර් ... decimal.Parse("0.00006317592")වැඩ - ඔබට තවත් දෙයක් සිදුවෙමින් පවතී. - විද්‍යාත්මක අංකනය විය හැකිද?
BrainSlugs83

9

මතකය සහ ක්‍රියාකාරිත්වය යන දෙකම තීරණාත්මක වන ක්‍රීඩා සහ කාවැද්දූ පද්ධති වැනි යෙදුම් සඳහා, පාවීම සාමාන්‍යයෙන් සංඛ්‍යාත්මක තේරීම වන අතර එය වේගවත් වන අතර ද්විත්ව ප්‍රමාණයෙන් අඩකි. පූර්ණ සංඛ්‍යා තේරීමේ ආයුධය ලෙස භාවිතා කර ඇත, නමුත් පාවෙන ලක්ෂ්‍ය ක්‍රියාකාරිත්වය නවීන ප්‍රොසෙසරවල පූර්ණ සංඛ්‍යා ඉක්මවා ඇත. දශම ඉවරයි!


බොහෝ නවීන පද්ධති, ජංගම දුරකථන පවා ද්විත්ව සඳහා දෘඩාංග සහය ඇත; ඔබේ ක්‍රීඩාවට සරල භෞතික විද්‍යාවක් තිබේ නම්, ද්විත්ව සහ පාවෙන අතර විශාල වෙනසක් ඔබට පෙනෙනු ඇත. (උදාහරණයක් ලෙස, සරල ග්රහක පරිගණක ක්රිඩාවට සමාන දී ප්රවේගය / ඝර්ෂණය ගණනය, යුගල ත්වරණය වැඩි fluidly පාවෙන වඩා ගලා ඉඩ -. එය ප්රශ්නයක් නොවේ කළ යුත්තේ වගේ, නමුත් එය මුළුමනින්ම කරන්නේ.)
BrainSlugs83

දෙගුණයක් පාවෙන ප්‍රමාණය මෙන් දෙගුණයක් වන අතර, එයින් අදහස් වන්නේ ඔබ දත්ත මෙන් දෙගුණයක් හපන්නට අවශ්‍ය වන අතර එමඟින් ඔබේ හැඹිලි ක්‍රියාකාරිත්වයට හානියක් වේ. සෑම විටම මෙන්, මැනීම සහ ඒ අනුව ඉදිරියට යන්න.
යෝයෝ

7

දශම, ද්විත්ව සහ පාවෙන විචල්‍ය වර්ග ඒවා අගයන් ගබඩා කරන ආකාරයට වෙනස් වේ. පාවීම යනු තනි නිරවද්‍යතාව (බිට් 32) පාවෙන ලක්ෂ්‍ය දත්ත වර්ගයකි, ද්විත්ව යනු ද්විත්ව නිරවද්‍යතාව (බිට් 64) පාවෙන ලක්ෂ්‍ය දත්ත වර්ගය සහ දශම යනු බිට් 128 පාවෙන ලක්ෂ්‍ය දත්ත වර්ගයකි.

පාවෙන - බිට් 32 (ඉලක්කම් 7)

ද්විත්ව - බිට් 64 (ඉලක්කම් 15-16)

දශම - බිට් 128 (සැලකිය යුතු ඉලක්කම් 28-29)

වැඩි විස්තර ... දශම, පාවෙන සහ ද්විත්ව අතර වෙනස


5

මෙම සියලු වර්ගවල ගැටළුව නම්, කිසියම් නිරවද්‍යතාවයක් නොපවතින අතර පහත දැක්වෙන උදාහරණයේ දී මෙන් කුඩා දශම සංඛ්‍යා සමඟ මෙම ගැටළුව ඇතිවිය හැකිය.

Dim fMean as Double = 1.18
Dim fDelta as Double = 0.08
Dim fLimit as Double = 1.1

If fMean - fDelta < fLimit Then
    bLower = True
Else
    bLower = False
End If

ප්‍රශ්නය: bLower විචල්‍යයේ අඩංගු අගය කුමක්ද?

පිළිතුර: බිට් 32 යන්ත්‍රයක bLower හි සත්‍යය අඩංගු වේ !!!

මම ඩබල් විසින් දශමයෙන් ආදේශ කළහොත්, bLower හි FALSE අඩංගු වන අතර එය හොඳ පිළිතුරකි.

දෙගුණයකින්, ගැටළුව වන්නේ fMean-fDelta = 1.09999999999 එය 1.1 ට වඩා අඩු වීමයි.

අවවාදයයි: වෙනත් සංඛ්‍යාවක් සඳහා ද එම ගැටළුව නිසැකවම පැවතිය හැකි යැයි මම සිතමි, මන්ද දශම යනු ඉහළ නිරවද්‍යතාවයකින් යුත් දෙගුණයක් පමණක් වන අතර නිරවද්‍යතාවයට සෑම විටම සීමාවක් ඇත.

ඇත්ත වශයෙන්ම, ද්විත්ව, පාවෙන සහ දශම COBOL හි ද්විමය දශමයට අනුරූප වේ!

COBOL හි ක්‍රියාත්මක කර ඇති වෙනත් සංඛ්‍යා වර්ග .Net හි නොවීම කනගාටුවට කරුණකි. COBOL නොදන්නා අය සඳහා, COBOL හි සංඛ්‍යාත්මක වර්ගයක් ඇත

BINARY or COMP like float or double or decimal
PACKED-DECIMAL or COMP-3 (2 digit in 1 byte)
ZONED-DECIMAL (1 digit in 1 byte) 

4

සරල වචන වලින්:

  1. දශම, ද්විත්ව සහ පාවෙන විචල්‍ය වර්ග ඒවා අගයන් ගබඩා කරන ආකාරයට වෙනස් වේ.
  2. නිරවද්‍යතාවය ප්‍රධාන වෙනසයි (මෙය තනි වෙනසක් නොවන බව සලකන්න) පාවෙන යනු තනි නිරවද්‍යතාව (බිට් 32) පාවෙන ලක්ෂ්‍ය දත්ත වර්ගය, ද්විත්ව ද්විත්ව නිරවද්‍යතාව (බිට් 64) පාවෙන ලක්ෂ්‍ය දත්ත වර්ගය සහ දශම 128-බිට් පාවෙන ලක්ෂ්‍ය දත්ත වර්ගය.
  3. සාරාංශ වගුව:

/==========================================================================================
    Type       Bits    Have up to                   Approximate Range 
/==========================================================================================
    float      32      7 digits                     -3.4 × 10 ^ (38)   to +3.4 × 10 ^ (38)
    double     64      15-16 digits                 ±5.0 × 10 ^ (-324) to ±1.7 × 10 ^ (308)
    decimal    128     28-29 significant digits     ±7.9 x 10 ^ (28) or (1 to 10 ^ (28)
/==========================================================================================
ඔබට මෙහි වැඩිදුර කියවිය හැකිය , පාවෙන , ද්විත්ව සහ දශම .


පවත්නා පිළිතුරු වල දැනටමත් ආවරණය නොවන මෙම පිළිතුර එකතු කරන්නේ කුමක් ද? BTW, “දශම” රේඛාවේ ඔබේ “හෝ” වැරදියි: ඔබ පිටපත් කරන වෙබ් පිටුවේ කප්පාදුව විකල්පයක් වෙනුවට බෙදීමක් පෙන්නුම් කරයි.
මාර්ක් ඩිකින්සන්

1
නිරවද්‍යතාවය ප්‍රධාන වෙනස බව මම තරයේ තර්ක කරමි. ප්‍රධාන වෙනස වන්නේ පදනමයි: දශම පාවෙන ලක්ෂ්‍යය හා ද්විමය පාවෙන ලක්ෂ්‍යය. එම වෙනස Decimalමූල්‍ය යෙදුම් සඳහා සුදුසු වන්නේ කුමක් ද යන්න Decimalසහ අතර තීරණය කිරීමේදී භාවිතා කළ යුතු ප්‍රධාන නිර්ණායකය වේ Double. Doubleවිද්‍යාත්මක යෙදුම් සඳහා නිරවද්‍යතාවය ප්‍රමාණවත් නොවීම කලාතුරකිනි (උදාහරණයක් ලෙස එහි සීමිත පරාසය නිසා විද්‍යාත්මක යෙදුම් සඳහා Decimalබොහෝ විට නුසුදුසුය ).
මාර්ක් ඩිකින්සන්

2

මේ සෑම එකක් අතර ඇති ප්‍රධාන වෙනස වන්නේ නිරවද්‍යතාවයයි.

floatයනු 32-bit, සංඛ්යාව doubleයනු 64-bitඅංකය හා decimalයනු 128-bitසංඛ්යාව.


0
  • දශම 128 බිට් (සැලකිය යුතු ඉලක්කම් 28-29) මූල්‍ය යෙදුම් සම්බන්ධයෙන් දශම වර්ග භාවිතා කිරීම වඩා හොඳ බැවින් එය ඔබට ඉහළ මට්ටමේ නිරවද්‍යතාවයක් සහ වටකුරු දෝෂ වළක්වා ගැනීමට පහසුය. නිරවද්‍යතාව අවශ්‍ය වන පූර්ණ සංඛ්‍යා නොවන ගණිතය සඳහා දශම භාවිතා කරන්න (උදා. මුදල් සහ මුදල්)

  • ද්විත්ව 64 බිට් (ඉලක්කම් 15-16) මුදල් හැසිරවීම හැර සැබෑ අගයන් සඳහා සාමාන්‍යයෙන් භාවිතා වන දත්ත වර්ගය ද්විත්ව වර්ග වේ. වඩාත්ම නිවැරදි පිළිතුර අවශ්‍ය නොවන පූර්ණ සංඛ්‍යා නොවන ගණිතය සඳහා දෙවරක් භාවිතා කරන්න.

  • පාවෙන 32 බිට් (ඉලක්කම් 7) එය වැඩිපුරම භාවිතා කරන්නේ ග්‍රැෆික් පුස්තකාලවල බැවින් සැකසුම් බලයන් සඳහා ඉතා ඉහළ ඉල්ලුමක් ඇති අතර වටකුරු දෝෂ දරාගත හැකි අවස්ථා ද භාවිතා කරයි.

Decimalsa ට වඩා මන්දගාමී වේ double/float.

Decimalsහා Floats/Doublesපවසන අන්දමට කාස්ට් තොරව සමාන කළ නො හැකි Floatsසහ Doublesකළ හැක.

Decimals කේතීකරණ හෝ පසුපස ශුන්‍යයන්ටද ඉඩ දෙන්න.


-1

.Net (c #) හි දශම, පාවෙන සහ ද්විත්ව අර්ථ දැක්වීමට

ඔබ සාරධර්ම පහත පරිදි සඳහන් කළ යුතුය:

Decimal dec = 12M/6;
Double dbl = 11D/6;
float fl = 15F/6;

ප්‍රති .ල පරීක්ෂා කරන්න.

සහ එක් එක් අත්පත් කරගත් බයිට් වේ

Float - 4
Double - 8
Decimal - 12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.