पूर्णांक स्थिरांक में अंडरस्कोर की अनुमति नहीं देने वाली भाषाओं में, क्या 1 बिलियन के लिए एक स्थिरांक बनाना एक अच्छा अभ्यास है?


39

उन भाषाओं में जो पूर्णांक शाब्दिक में अंडरस्कोर की अनुमति नहीं देती हैं , क्या 1 बिलियन के लिए एक स्थिरांक बनाना एक अच्छा विचार है? C ++ में उदा:

size_t ONE_BILLION = 1000000000;

निश्चित रूप से, हमें 100 जैसी छोटी संख्या के लिए स्थिरांक नहीं बनाना चाहिए। लेकिन 9 शून्य के साथ, यकीनन एक शून्य को छोड़ना या इस तरह कोड में एक अतिरिक्त जोड़ना आसान है:

tv_sec = timeInNanosec / 1000000000;
tv_nsec = timeInNanosec % 1000000000;

24
मुझे उम्मीद है कि यहां हर कोई NO के लिए वोट करेगा । इस तरह, शायद एक दिन मेरा बैंक एक बिलियन डॉलर मेरे खाते में स्थानांतरित कर देगा क्योंकि एक प्रोग्रामर ने एक निरंतर और गलत तरीके से इस्तेमाल किया गया शून्य नहीं किया! :)
रिएक्टगुलर

43
छोटी संख्या के लिए स्थिरांक क्यों नहीं बनाएं? 100 का क्या अर्थ है? जब तक कुछ संदर्भ नहीं है, यह एक जादू की संख्या है।
एलन

4
@MathewFoscarini सामान्य तौर पर, गलतियाँ किसी भी तरह से हो सकती हैं। लेकिन जब यह आपके बैंक की बात आती है, तो गलतियाँ हमेशा आपके खिलाफ होंगी।
एमोरी

23
लेखन पर विचार करें 1e9, 10^9या 1_000_000_000यदि आप जिस भाषा का उपयोग कर रहे हैं वह उसका समर्थन करती है।
हमर

जवाबों:


33

अधिकांश भाषाओं में कुछ प्रकार के घातीय संकेतन हैं। एक मिलियन है 1e6, (6 की शक्ति के लिए 1 गुणा 10)। यह मूल रूप से अधिकांश प्रस्तावों की तुलना में इस मुद्दे को बेहतर बनाता है।

बहुत सी सी-जैसी भाषाओं में, वैज्ञानिक संकेतन हालांकि एक अस्थायी बिंदु प्रकार को परिभाषित कर रहा है , जो कि दुर्भाग्यपूर्ण है अगर आपको वास्तव में इंट की आवश्यकता है। हालाँकि, आप अपने फ़ॉर्म्यूलर में निहित रूपांतरणों से बचने के लिए आसानी से टाइप-कास्ट कर सकते हैं।

n / int(1e9) एक बिलियन से विभाजित होगा।

आपके उदाहरण में, भौतिक मात्रा (नैनोसेकंड में समय) के साथ काम करते हुए, मैं आमतौर पर खुद से पूछूंगा कि क्या पूर्णांक सही प्रकार है। वास्तव में एक फ़्लोटिंग पॉइंट doubleबेहतर हो सकता है जब औसत दर्जे की मात्रा से निपटना हो (हालाँकि कुछ ऐसे मामले हैं जहाँ आप पसंद करेंगे long long)।


6
मुझे लगता है कि NANOSECONDS_IN_ONE_SECOND समाधान बहुत स्पष्ट और स्पष्ट है
थॉमस

1
प्रश्न पूर्णांक उदारवादियों के बारे में था और मैं वैज्ञानिक संकेतन का उपयोग करने का प्रस्ताव करता हूं। चाहे ऐसा करने के लिए या एक स्थिरांक को परिभाषित करने से संरचित कोड का एक मुद्दा है जो प्रश्न में नहीं पूछा गया था। एक निरंतरता को परिभाषित करना सीमित अमूर्तता को जोड़ता है, मैं बेहतर अमूर्तता प्राप्त करने के लिए रूपांतरण फ़ंक्शन / मैक्रो
लिखूंगा

1
फ़्लोटिंग पॉइंट नंबरों की विशिष्ट गोलाई अंतर समस्याओं को जोखिम में न डालकर एक बहुत बड़े डबल को कास्टिंग करेगा?
फिलिप

सामान्य सटीक पूर्णांक प्रकारों के साथ यह तब तक समस्या नहीं होनी चाहिए जब तक आप डबल सटीक फ्लोट का उपयोग करने से परिवर्तित हो जाते हैं। long longसीमा के मूल्यों का उपयोग करते समय आप सही हैं ।
सिरफिरे

145

इसके बजाय NANOSECONDS_IN_ONE_SECOND नामक एक बनाएं, जो इसका प्रतिनिधित्व करता है।

या एक छोटा, बेहतर नाम यदि आप एक के बारे में सोच सकते हैं।


58
मैं कहूंगा Nanoseconds_Per_Secondलेकिन यह मेरी राय में, सही उत्तर है।
KChaloux

8
@ मैथ्यू मैं आपकी बात नहीं मानता। प्रति मीटर मिलीमीटर कहने में कुछ गलत नहीं है। आप अनुमान लगा सकते हैं कि यह अतिरेक है, उस नैनोसेकंड एमईएन में एक सेकंड के एक अरब अंश हैं, लेकिन इसे फिर से बताने में कुछ भी गलत नहीं है। यह कहने की तरह है कि 1 + 1 = 2. "x प्रति y" तब और अधिक समझ में आता है जब x और y असंतुष्ट होते हैं, जैसे "इकाइयाँ प्रति आधा दर्जन" या "नैनोसेकंड प्रति मिलीसेकंड"
मार्क कैनलस

7
@MathewFoscarini वास्तव में, नहीं, इस संदर्भ में यह नहीं है। यदि यह होता है, तो एक निरंतर नाम NANOSECONDSव्यर्थ है क्योंकि आप यह नहीं बता सकते कि इसे लागू करने के लिए क्या करना चाहिए। इसी तरह, NANOSECONDS_PER_MICROSECONDएक समान मान्य स्थिरांक है जो समझ में आता है।
इज़काता

5
@MathewFoscarini, "मिलीमीटर प्रति मीटर" कच्चे मान को प्राप्त करने के लिए रूपांतरण पर इकाई को हटाने का एक तरीका है। 1mm/1m = 1000, जो वास्तव में यहाँ क्या किया जा रहा है की बात है।
zzzzBov

11
इतना टाइपिंग क्यों? NS_PER_SECकिसी को भी, जो नैनोसेकंड के साथ काम करना चाहिए स्पष्ट होना चाहिए।
रेक्स केर

67

स्थिरांक संख्याओं को अर्थ देने के लिए होते हैं। में कोई अतिरिक्त अर्थ नहीं ONE_BILLIONहै 1000000000। दरअसल, यह इसे और अधिक भ्रामक बनाता है, क्योंकि विभिन्न प्राकृतिक भाषाओं में, एक बिलियन का मतलब कुछ अलग होता है (या तो एक हजार मिलियन या मिलियन मिलियन)! यदि आप इसे कम लिखना चाहते हैं, तो एक अच्छा मौका है कि आपकी प्रोग्रामिंग भाषा वैज्ञानिक नोटेशन का उपयोग करने की अनुमति देती है, अर्थात 1e9। अन्यथा, मैं @ जॉन के साथ सहमत हूं, कि यह संख्या वास्तव में एक सेकंड में नैनोसेकंड की संख्या का मतलब है, इसलिए इसे नाम दें।


9
अलग-अलग भाषाओं में अरबों का मतलब अलग-अलग राशि से अलग होता है।
फ्रोज़ेंको

3
नियमित भाषाओं को प्राकृतिक भाषाओं में बदलने का सुझाव देंगे। नियमित का मतलब कुछ और है ...
जे.के.

भाषाओं में "अरब" की विभिन्न व्याख्याएं इतने अच्छे बिंदु हैं! मैं आपके उत्तर को दो बार क्यों नहीं बढ़ा सकता!
DSF

3
आपको विभिन्न भाषाओं की आवश्यकता नहीं है। आपको विभिन्न देशों की भी आवश्यकता नहीं है। ब्रिटिश अंग्रेजी में, "अरब" का मतलब आधिकारिक संचार (मास मीडिया और सरकार) में 1974 से पहले और बाद में कुछ अलग है, और दोनों usages अभी भी मौजूद हैं।
जोर्ज डब्ल्यू मित्तग

1
" One_BILLION में 10000000000 में कोई अतिरिक्त अर्थ नहीं है । मैं असहमत हूं। (संकेत: मैंने जानबूझकर आपको गलत तरीके से जोड़ा और एक और शून्य जोड़ा; अगर मैंने इसका उल्लेख नहीं किया होता तो क्या देखा होगा?)
कीथ थॉम्पसन

27

एक या दो usages के लिए, मैं सम्मेलन का उपयोग करेगा:

tv_sec = timeInNanosec / (1000 * 1000 * 1000);
tv_nsec = timeInNanosec % (1000 * 1000 * 1000);

यह पूरी तरह से आत्म व्याख्यात्मक है, एक निरंतरता के लिए संकलित हो जाता है और इसे पेंच करना मुश्किल होता है।

इसके अलावा, यह इस तरह के मामलों में बहुत उपयोगी है:

var Time = 24 * 60 * 60;

यह देखना आसान है कि हम सेकंड में एक दिन के बारे में बात कर रहे हैं।


यह वही है जो मैं आमतौर पर करता हूं। इसका यह भी फायदा है कि मैं यह नहीं भूलूंगा कि मैंने कल NANOSECONDS_IN_ONE_SECOND को परिभाषित किया और आज NANOSECONDS_PER_SECOND को परिभाषित किया। और शायद ONE_AMERICAN_BILLION कल।
थॉमस पैड्रॉन-मैककार्थी

निश्चित रूप से 'SecondsInOneDay = 24 * 60 * 60' अभी भी आसान है?
JBRWilkinson

@JBRWilkinson यकीन है, मेरा प्रारंभिक स्निपेट एक वर्ग का उपयोग कर रहा था instance.Time = ..., लेकिन फिर मैंने इसे नीचे
फेंक

3
C या C ++ में, (1000 * 1000 * 1000)प्रकार का होता है int, जिसे केवल 16 बिट्स की आवश्यकता होती है, इसलिए यह ओवरफ्लो हो सकता है। आप उससे (1000L * 1000L * 1000L)बचने के लिए लिख सकते हैं ।
कीथ थॉम्पसन

मैं यह बहुत कुछ करता हूं। ये अच्छी तरह काम करता है।
vy32

10

मान की लंबाई वह नहीं है जो परिभाषित करती है कि किसी स्थिरांक की आवश्यकता है या नहीं।

आप जादू की संख्या से बचने के लिए स्थिरांक का उपयोग करते हैं , टाइपिंग से बचने के लिए नहीं।

उदाहरण के लिए ये पूरी तरह से वैध स्थिरांक हैं:

public static final int CLOSE_CURSORS_AT_COMMIT = 1;
public static final int CONCUR_READ_ONLY = 2;
public static final int CONCUR_UPDATABLE = 3;
public static final int FETCH_FORWARD = 4;
public static final int FETCH_REVERSE = 5; 
public static final int FETCH_UNKNOWN = 6;
public static final int HOLD_CURSORS_OVER_COMMIT = 7;
public static final int TYPE_FORWARD_ONLY = 8;
public static final int TYPE_SCROLL_INSENSITIVE = 9;
public static final int TYPE_SCROLL_SENSITIVE = 10;

उपयोग:

public static final int NANOSECS_PER_SECOND = 1000000000;

(कोड नमूने जावा में हैं, अपनी पसंदीदा भाषा में अनुवाद करें)


3
+1 नामांकित संख्या लगभग बेकार हैं। यह उन संख्याओं को अर्थ देने के लिए स्थिर करता है। वे क्या प्रतिनिधित्व करते हैं? वे किस चीज को गिन रहे हैं या सीमित या औपचारिक रूप से गुणांक नाम दे रहे हैं? गिनती का मूल्य क्या नहीं है।
जस्टिन बीसी

5
यह देखकर कि हम जावा की बात कर रहे हैं, मैं अवलोकन करूँगा कि, जावा 7 के रूप में, हम पठनीयता में मदद करने के लिए संख्या में अंडरस्कोर लगा सकते हैं!
निक

2
वे वैध स्थिरांक के भयानक उदाहरण हैं। उन्हें एनम होने चाहिए थे, सिवाय इसके कि वे एनम से पहले बनाए गए थे।
क्रिस्टोफर हैमरस्ट्रॉम

@ ChristofferHammarström वे वास्तव में एनम से पहले बनाए गए थे, वे जावा एसडीके के एसक्यूएल पैकेज में, रिजल्टसेट क्लास का हिस्सा हैं।
ट्यूलेंस कोर्डोवा

2
@ ChristofferHammarström वे बुरे हैं क्योंकि अब हमारे पास दुश्मनी है, लेकिन बेपनाह होने के लिए नहीं। जब ये वर्ग बनाए गए थे तब Enum मौजूद नहीं था और FETCH_FORWARD और FETCH_REVERSE जैसे पारस्परिक रूप से अनन्य विकल्पों के बीच अंतर करने के लिए उन्हें एक अलग मूल्य दे रहा है। मान मायने नहीं रखता, बस तथ्य यह है कि वे अलग हैं।
ट्यूलेंस कोर्डोवा

8

एक अमेरिकी या यूरोपीय अरब?

(या तकनीकी शब्दों में, एक अरब छोटे पैमाने पर या लंबे पैमाने पर - एक 1000 मिलियन है, दूसरा एक मिलियन मिलियन है)।

इस भ्रम को देखते हुए, फिर मैं हाँ कहूँगा - यह एक बार इसे परिभाषित करने और इसके साथ बनाए रखने के लिए समझ में आता है, इसी तरह किसी भी निरंतर पर लागू होता है जिसे आपको परिभाषा को सहमत करने की आवश्यकता है - इसे एक बार परिभाषित करें।


17
"एक अमेरिकी या यूरोपीय अरब?" - "क्या? मुझे नहीं पता! आह्ह्ह्ह !!!!"
Tesserex

यूके में, कम से कम, हमने 1e9 बिलियन को अपनाया है।
जैक एडले

1
@Tesserex - ठीक है, आपको राजा होने पर इन बातों को जानना होगा, आप जानते हैं।
gbjbaanb

5

कारण नहीं

सबसे पहले, यहां एक कारण है कि कोई अंडरस्कोर न लिखें या इसे अनुकरण करने के लिए किसी भी चाल का उपयोग न करें: यह कोड में खोजने के लिए स्थिरांक को कठिन बनाता है। मान लीजिए कि कुछ कार्यक्रम प्रदर्शित करता है, कहीं इसके संचालन में, कुछ पैरामीटर के लिए हार्ड-कोडित मूल्य 1500000। मैं जानना चाहता हूं कि कार्यक्रम के स्रोत कोड में यह वास्तव में कहां होता है, इसलिए मैं इसके लिए कोड तैयार करता हूं 1500000, और कुछ भी नहीं पाता हूं । क्यूं कर? यह हेक्साडेसिमल में हो सकता है (लेकिन ऐसे गोल दशमलव संख्या के लिए क्यों)। मेरे लिए अज्ञात, वास्तव में के रूप में लिखा है 1_500_000। मुझे रेगेक्स की जरूरत थी 1_?500_?000

टिप्पणी में मार्गदर्शक चरित्र

सिर्फ इसलिए कि एक प्रकार की दृश्य सहायता उपलब्ध नहीं है, या हम इसे उपरोक्त कारण के लिए उपयोग नहीं करना चाहते हैं, इसका मतलब यह नहीं है कि हम वैकल्पिक दृश्य सहायता बनाने के लिए पाठ फ़ाइल के दो आयामों का लाभ नहीं उठा सकते हैं:

foo = bar / 1000000000;
//           --^--^--^  

इससे हम खुद को आसानी से समझा सकते हैं कि तीन शून्य के तीन समूह हैं। फिर भी, हम अभी भी स्रोत कोड को 1000000000खोज सकते हैं और पा सकते हैं।

सिंटेक्स रंग

प्रोग्रामेबल सिंटैक्स रंग के साथ एक टेक्स्ट एडिटर को बेहतर पठनीयता के लिए वैकल्पिक रंगों के साथ संख्यात्मक स्थिरांक में समूह समूहों को रंगीन करने के लिए बनाया जा सकता है। हमें कोड में कुछ भी करने की आवश्यकता नहीं है।

प्रीप्रोसेसिंग: सी, सी ++, ऑब्जेक्टिव सी

अब, यदि हम वास्तव में अंकों के बीच कुछ अल्पविराम चाहते हैं, तो C और C ++ में हम कुछ प्रीप्रोसेसिंग का उपयोग कर सकते हैं:

/* Four digit base TH-ousand constant macro */
/* Condensed using Horner's rule */
#define TH(A,B,C,D) ((((((A) * 1000) + (B)) * 1000) + (C)) * 1000 + D)

tv_sec = nanoseconds / TH(1,000,000,000)

जैसी संख्याओं के लिए काम करता है TH(1,234,567,890)

TH के समान एक मैक्रो भी अंकगणित के बजाय टोकन चिपकाने के साथ काम कर सकता है। सी प्रीप्रोसेसर में, बाइनरी ##ऑपरेटर ("टोकन पेस्ट") को एक ही टोकन में दो ऑपरेंड को एक साथ चिपकाने के लिए मैक्रो बॉडी में इस्तेमाल किया जा सकता है। एक या दोनों ऑपरेंड मैक्रो तर्क हो सकते हैं। यहाँ नकारात्मक पक्ष (हमारे लिए जोखिम पैदा करना) यह है कि यदि परिणामी catenation एक वैध टोकन नहीं है, तो व्यवहार अपरिभाषित है।

#define TOK4(A, B, C, D) A ## B ## C ## D

अभी व

TOK4(1,000,000,000)       /* produces the single token 1000000000 */
TOK4(1,123,000,000.0E+2)  /* produces the single token 1123000000.0E+2 */
TOK4(pr,in,t,f)           /* produces the token printf */
TOK4(#,*,a,b)             /* undefined behavior, #*ab is not valid token syntax */

सी प्रोग्राम जो पहचानकर्ताओं को एक साथ चिपकाते हैं और परिणामों का उपयोग वैश्विक चर और कार्यों को नाम देने के लिए मौजूद हैं और उनके साथ काम करने के लिए भयानक हैं क्योंकि वे GNU आईडी-बर्तन और ctags जैसे उपकरणों के लिए अभेद्य हैं।


2
मैंने देखा है प्रीप्रोसेसर के सर्वश्रेष्ठ गालियों में से एक के लिए +1। मैं अभी भी NSEC_PER_SEC या उत्पादन में कुछ के साथ जाऊँगा, हालाँकि।
विक्टर

प्रीप्रोसेसर को गाली देने के लिए बहुत लगभग :) :)
एक CVn

3

हाँ, यह एक उचित विचार जैसा लगता है। ऑफ-बाय-वन DIGIT त्रुटियाँ कुख्यात ऑफ़-बाय-वन त्रुटियों से भी बदतर हैं। हालाँकि, यह अन्य लोगों के लिए भ्रम पैदा कर सकता है (आपके भविष्य के स्वयं सहित) कोड को पढ़ने के लिए।

NANOSEC_PER_SEC जैसे अधिक व्याख्यात्मक नाम अच्छा लगता है, क्योंकि यह स्पष्टता को जोड़ देगा जहां इसका उपयोग समय के लिए किया जाता है। हालांकि, समय के अलावा अन्य संदर्भों में इसका उपयोग करने का कोई मतलब नहीं है, और हर स्थिति के लिए एक अलग 1,000,000,000 बनाना अव्यावहारिक होगा।

आप वास्तव में क्या करना चाहते हैं, मूर्खतापूर्ण जैसा कि यह पहली बार लगता है, 'विभाजन से अधिक है'। यह NANO_PER छोड़ता है, जो न केवल भाषा-स्वतंत्र (अमेरिका और यूरोप में 10 ^ 9) है, बल्कि स्थिति-स्वतंत्र (इकाइयों पर कोई सीमा नहीं है), और इसे टाइप करना और पढ़ना आसान है।


यह पोस्ट पढ़ना मुश्किल है (पाठ की दीवार)। क्या आप इसे बेहतर आकार में संपादित करना चाहेंगे ?
कुटकी

3

सामान्य तौर पर इकाई रूपांतरणों के लिए अदिश स्थिरांक का उपयोग करना एक बुरा विचार है, और यदि आप खुद को ऐसी चीजों के लिए स्थिरांक बनाते हैं, तो आप कई स्थानों पर रूपांतरण कर रहे हैं।

जब आपके पास एक इकाई की मात्रा होती है (कहते हैं, 10 सेकंड), और दूसरी इकाई (यानी नैनोसेकंड) में बदलना चाहते हैं; यह आपकी भाषा के प्रकार की प्रणाली का उपयोग करने के लिए ठीक समय है, ताकि यह सुनिश्चित किया जा सके कि यूनिट्स वास्तव में आप के रूप में स्केल किए गए हैं।

अपने कार्य एक ले बनाओ Nanosecondsपैरामीटर, और के लिए है कि कक्षा में रूपांतरण ऑपरेटरों और / या कंस्ट्रक्टर्स प्रदान Seconds, Minutesया क्या-है-आप। यह जहां अपने है const intया #defineया 1e9अन्य उत्तर में देखा अंतर्गत आता है।

यह आपके कोड के आसपास तैरती अस्पष्ट इकाइयों के चर होने से बचा जाता है; और जहां गलत गुणा / भाग लगाया गया था, या पहले से ही लागू किया गया था, या मात्रा वास्तव में समय के बजाय दूरी थी, या ...

इसके अलावा, ऐसी कक्षाओं में सादे स्केलार्सपैरिट से निर्माण करना अच्छा है और एक स्थिर "मेकसेकंड्स (इंट)" का उपयोग करना या अपारदर्शी संख्याओं के मैला उपयोग को हतोत्साहित करना है।

विशेष रूप से आपके उदाहरण के लिए, C ++ में Boost.Chrono की जाँच करें ।


1
+ बहुत कम से कम, एक आधार से स्केलिंग या ऑफसेट कारक के साथ एक सामान्य प्रकार का उपयोग करें, अक्सर दुर्भावनापूर्ण टाइमज़ोन की तरह।
जस्टिनसी

1

मैं व्यक्तिगत रूप से इसे निरंतर बनाने के लिए अच्छा अभ्यास नहीं मानूंगा जब तक कि इसे निरंतर होने की आवश्यकता नहीं है। अगर इसकी कई जगहों पर जा रही है और यह संशोधन / या परीक्षण के लिए फ़ाइल के शीर्ष पर परिभाषित किया जा रहा है तो उपयोगी होगा।

यदि इसकी सिर्फ इसलिए कि इसके टाइप करने के लिए अजीब है? फिर नहीं।

व्यक्तिगत रूप से अगर मुझे किसी और का कोड मिला है जिसमें एक निरंतर परिभाषित था, तो मैं आमतौर पर इस कोड का एक महत्वपूर्ण पहलू मानता हूं। उदाहरण के लिए, जीवित टाइमर, अधिकतम संख्या में कनेक्शन रखने की अनुमति। अगर मुझे इसे डिबग करना था तो मैं शायद इस पर बहुत अधिक ध्यान नहीं दे पाऊंगा कि यह पता लगाने की कोशिश की जा रही है कि इसका उपयोग क्यों / कहाँ किया जा रहा है।


मुझे मजाक लगता है लेकिन अगर बैंक प्रोग्रामर को हर नंबर के लिए एक निरंतरता बनानी होती तो आप सॉफ्टवेयर को ट्रांसफर कर सकते थे वह विशाल, असहनीय और धीमा होगा। मैं केवल कल्पना कर सकता हूं कि ऐसा क्या होगा, कल्पना की जा रही थी कि पैसा ट्रांसफर करने में 3 कार्यदिवस लगेंगे .... ओह माय गॉड, थॉट आईटी !!!
साइमन मैकलॉघिन ने

मेरे बैंक को पैसा ट्रांसफर करने में 3 दिन लगते हैं :(
रिएक्टगुलर

1
); @MathewFoscarini बैंकरों एक्सेल वे की जरूरत नहीं है प्रोग्रामर का उपयोग
मातुज़

@ साइमन भाषा और संकलक के आधार पर, स्थिरांक को कोड में अनुकूलित किया जाना चाहिए, थोड़ा ओवरहेड। मुझे आपकी बात समझ में आती है, लेकिन एक जादू की संख्या के बजाय एक नाम का उपयोग करके जहां भी कोड का उपयोग किया जा सकता है, वहां कोड पठनीयता में मदद मिलेगी।
स्टीवन

पढ़ने के लिए अजीब अजीब प्रकार से एक मुद्दे की तुलना में बहुत अधिक है।
एल्ब

0

जब आप सोचते हैं कि आपने अपने प्रश्न शीर्षक में "1000000000" के बजाय "1 बिलियन" क्यों लिखा है, तो आपको एहसास होगा कि उत्तर हाँ क्यों है।


0

अपने बड़े शाब्दिक के लिए एक निरंतरता न बनाएं। आपको प्रत्येक ऐसे शाब्दिक के लिए एक निरंतरता की आवश्यकता होगी, जो कि (मेरी राय में) एक पूर्ण मजाक है। यदि आपको वाक्य रचना हाइलाइटिंग जैसी चीजों की मदद के बिना अपने शाब्दिक को स्पष्ट करने की आवश्यकता है, तो आप अपने जीवन को "आसान" बनाने के लिए कार्य या मैक्रोज़ बना सकते हैं:

#define SPLIT3(x, y, z) x##y##z

int largeNumber1 = SPLIT3(123,456,789);
int largeNumber2 = 123456789;

0

मैं यह करूँगा:

const int Million = 1000 * 1000;
const int Billion = 1000 * Million;

या

const int SciMega = 1000 * 1000; const int SciGiga = 1000 * SciMega;

नैनोसेकंड प्रति सेकंड की संख्या के बारे में: नैनो गीगा का "उलटा" है।

Kilo  Mega  Giga   etc.
10^3  10^6  10^9
Milli Micro Nano   etc.
10^-3 10^-6 10^-9

"विज्ञान" पर ध्यान दें - वैज्ञानिक के लिए, जैसा कि कंप्यूटरों में, किलो, मेगा, गीगा आदि के अर्थ अलग हैं: 1024 (2 ^ 10), 1024 * 1024 (2 ^ 20), आदि 2 मेगाबाइट 2,000,000 बाइट्स नहीं हैं। ।

अद्यतन टिप्पणीकर्ता ने बताया कि 2 के डिजिटल घातांक के लिए विशेष शब्द मौजूद हैं: http://en.wikipedia.org/wiki/Mibibyte


"2 मेगाबाइट 2,000,000 बाइट्स नहीं है।" किसी भी कताई-थाली हार्ड डिस्क निर्माता से पूछें जो आप चाहते हैं। (
डाउनवॉटर

@michaelkjorling यह एक प्रोग्रामिंग प्रश्न है, न कि व्यावसायिक नैतिकता या विपणन। मैं हार्ड ड्राइव के बारे में सहमत हूं, लेकिन यह एक अलग विषय है। और नीचे वोटों के बारे में!
मि। टीए

1
दरअसल, 2 मेगाबाइट 2,000,000 बाइट्स है। 2 मेबिबाइट्स 2,097,152 बाइट्स हैं। देखें en.wikipedia.org/wiki/Mebibyte
vy32

@ vy32 धन्यवाद, ऐसा पहले कभी नहीं सुना गया। प्रतिबिंबित करने के लिए मेरे उत्तर को अपडेट करेगा।
श्री टीए

@ श्रीमान, कोई बात नहीं! हम SI इकाइयों के अनुपालन में कंप्यूटर विज्ञान लाने के लिए कड़ी मेहनत कर रहे हैं! संघ में शामिल हों।
v3232
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.