কেন আপাচি কমন্স '১২३' সংখ্যাকে বিবেচনা করে?


101

অ্যাপাচি কমন্স ল্যাংয়ের ডকুমেন্টেশন অনুসারে StringUtils.isNumeric(), স্ট্রিং '১২३' সংখ্যাসূচক।

যেহেতু আমি বিশ্বাস করি যে এটি ডকুমেন্টেশনে ভুল হতে পারে, তাই আমি বিবৃতিটি যাচাই করতে পরীক্ষা চালিয়েছি। আমি দেখেছি যে অ্যাপাচি কমন্স অনুযায়ী এটা হল সাংখ্যিক।

এই স্ট্রিংয়ের সংখ্যাটি কেন? এই চরিত্রগুলি কী উপস্থাপন করে?


61
সম্ভবত তারা কোনও ভাষায় অঙ্ক উপস্থাপন করে। সমস্ত ভাষা অঙ্কের প্রতিনিধিত্ব করতে 0 থেকে 9 টি প্রতীক ব্যবহার করে না।
Eran

165
এগুলি
হিন্দিতে

11
আপনি পূর্ণসংখ্যার মানটি পেতে পারেন Integer.parseInt("१२३")
saka1029

9
@ dan04 এগুলি সংখ্যা নয়, সেগুলি হ'ল এমন অক্ষর যা নির্দিষ্ট ধ্রুবকগুলির প্রতিনিধিত্ব করতে জনপ্রিয়। ⅯⅭএবং মধ্যে পার্থক্য নোট করুন MC
অঙ্কুর

উত্তর:


198

কারণ "চরসিক্যেন্সে কেবল ইউনিকোড ডিজিট রয়েছে" (আপনার লিঙ্কযুক্ত ডকুমেন্টেশনের উদ্ধৃতি )।

সমস্ত চরিত্রের জন্য সত্য ফিরে Character.isDigit:

কিছু ইউনিকোড চরিত্রের ব্যাপ্তিগুলিতে ডিজিট থাকে:

  • '\ u0030' এর মাধ্যমে '\ u0039', আইএসও-ল্যাটিন -১ ডিজিট ('0' মাধ্যমে '9')
  • '\ u0660' এর মাধ্যমে '\ u0669', আরবি-ইন্দিক ডিজিট
  • '\ u06F9' এর মাধ্যমে '\ u06F0', প্রসারিত আরবি-ইন্ডিক অঙ্কগুলি
  • '\ u096F' এর মাধ্যমে '\ u0966', দেবনাগরী অঙ্কগুলি
  • '\ uFF10' এর মাধ্যমে '\ uFF19', পূর্ণ দৈর্ঘ্যের অঙ্কগুলি

অন্যান্য অনেকগুলি চরিত্রের ব্যাপ্তিতে ডিজিটও রয়েছে।

१२३ দেবনাগরী অঙ্কগুলি:


11
ভাল @Joker_vD, আপনি নির্দিষ্ট করা নেই থাকেন যা জমিদার, তাই হ্যাঁ, নিশ্চিত করুন: Integer.parseInt("222", 2)
অ্যান্ডি টার্নার

4
@ জোকার_ভিডি এটি খুব কঠিন নয়; অনেকগুলি অসমর্থিত ভাষা রয়েছে। তা সত্ত্বেও 亿, চিনিস রয়েছে , যা 10 ^ 8 প্রতিনিধিত্ব করে -> এটি 3 এর শক্তিতে একটি ওভারফ্লো হতে পারে। সংখ্যা ব্যবস্থার তালিকা
সিড্রিক রেইচেনবাচ

13
@ সিড্রিকরিচেনবাচ: সেখানে মূল পার্থক্যটি হ'ল n সংখ্যাসূচক থাকাকালীন (এই ক্ষেত্রে সংখ্যাসূচক টাইপের = সংখ্যাসূচক মানের এক নয় এমন মানগুলির মান অনুসারে) এটি কোনও ধরণের অঙ্ক নয় । (এটি থাকলেও আপনি এটিকে 3 এর শক্তিতে নিয়ে যেতেন না; আপনি মূলকে বিভিন্ন শক্তিতে উন্নীত করতেন , অঙ্কগুলি না )) parseIntঅঙ্কের প্রয়োজন হয় এবং সম্ভবত বিভ্রান্তিকরভাবে isNumericএই প্রশ্নটির পদ্ধতিটি দশমিক অঙ্কের অক্ষরের জন্য পরীক্ষা করে ( জেনারেল_ ক্যাটাগরি = দশমিক_ সংখ্যা) সংখ্যার অক্ষরের বৃহত্তর বিভাগের পরিবর্তে।
ব্যবহারকারী 2357112

10
দেওয়ানগরী ডিজিটের সম্পূর্ণ সেট ०१२३४५६७८९
dan04

2
@ v7d8dpo4 (গুলি) তিনি জিজ্ঞাসা করেছিলেন যে Integer.parseInt()3-অক্ষরের সংখ্যার ইনপুট স্ট্রিংয়ের জন্য ব্যতিক্রম ছড়িয়ে দেওয়ার কোনও উপায় আছে কিনা ।
অ্যান্ডি টার্নার

59

প্রতীক 123 নেপালি ভাষা বা অন্য কোন ভাষা ব্যবহার করার জন্য 123 হিসাবে একই দেবনাগরী লিপি যেমন হিন্দি, গুজরাটি, ইত্যাদি, এবং সেইজন্য এ্যাপাচি কমন্স জন্য একটি সংখ্যা।


3
আরবি সংখ্যাগুলিতে সেই জিনিসটি প্রায় "123" এর মতো দেখাচ্ছে।
Panzercrisis

41
আরবরা ভারতীয়দের কাছ থেকে তাদের সংখ্যা পেয়েছিল।

5
@ রহুল আরবি সংখ্যাগুলি 1-9, সাধারণভাবে হিসাবে ١-٩ নয়।
মারুন

26

আপনি Character#getTypeচরিত্রের সাধারণ বিভাগটি পরীক্ষা করতে ব্যবহার করতে পারেন :

System.out.println(Character.DECIMAL_DIGIT_NUMBER == Character.getType('१'));

এটি মুদ্রণ করবে true, যা একটি "প্রমাণ" যে '১' একটি সংখ্যার সংখ্যা

এবার আসুন '১' চরিত্রের ইউনিকোড মান পরীক্ষা করা যাক:

System.out.println(Integer.toHexString('१'));
// 967

এই সংখ্যাটি দেবনাগরী অঙ্কগুলির পরিসীমাতে রয়েছে - যা এটির \u0966মাধ্যমে \u096F

এছাড়াও চেষ্টা করুন:

Character.UnicodeBlock block = Character.UnicodeBlock.of('१');
System.out.println(block.toString());
// DEVANAGARI

দেবনাগরী হ'ল:

ভারত ও নেপালের একটি আবুগিদা (বর্ণমালা) বর্ণমালা

"১২३" হ'ল "123" (বেসিক ল্যাটিন ইউনিকোড)।

পাঠ:


1
এটি ব্লকটিতে DECIMAL_DIGIT_NUMBERরয়েছে তার চেয়ে বেশি ধরণের তা তারা উল্লেখযোগ্য DEVANAGARI। সেই ব্লকেও অ-অঙ্কের অক্ষর রয়েছে।
অ্যান্ডি টার্নার

23

যদি আপনি কখনই কোনও নির্দিষ্ট "চরিত্র" এর বৈশিষ্ট্যগুলি জানতে চান (এবং বেশ কয়েকটি রয়েছে) তবে সরাসরি উত্সটিতে যান: ইউনিকোড.অর্গ । তাদের কাছে গবেষণা সরঞ্জাম রয়েছে যা আপনাকে জানার যত্ন নেবে এমন বেশিরভাগ কিছুই আপনাকে দেখাতে পারে।

মনে রাখুন: ইউনিকোড কনসোর্টিয়াম একটি স্পেসিফিকেশন উত্পাদন করে, সফ্টওয়্যার নয়। এর অর্থ হ'ল প্রতিটি সফটওয়্যার বিক্রেতার উপর নির্ভর করে তারা যথাসম্ভব নির্ভুলতা প্রয়োগ করতে পারে । এইচটিএমএল, জাভাস্ক্রিপ্ট, সিএসএস, এসকিউএল ইত্যাদির মতো বিভিন্ন প্ল্যাটফর্ম, ভাষা এবং এর মধ্যে বিভিন্নতা রয়েছে। উদাহরণস্বরূপ, আমি মাইক্রোসফ্টের .NET ফ্রেমওয়ার্কে একটি বাগ পেয়েছি যার মাধ্যমে ল্যাটিন বর্ণগুলি প্রদত্ত করে A-Zএবং a-z- কোড পয়েন্ট 0x24B6 এর মাধ্যমে 0x24E9 - সঠিকভাবে নিবন্ধন করে না char.IsLetter = true( এখানে বাগ রিপোর্ট )। এবং এটি সম্পর্কিত কার্যকারিতার ক্ষেত্রে অপ্রত্যাশিত আচরণের দিকে পরিচালিত করে, যেমন TextInfo.ToTitleCase()পদ্ধতিটি কল করার সময় ( এখানে বাগ রিপোর্ট )।


1
দুর্দান্ত রেফারেন্স! (যদিও তারা আমাকে বিস্মিত করে তোলে যে ইউনিকোড শীর্ষে চলে গেছে কিনা!)
পিজেট্রাইল

1
আপনি যদি স্থানীয়ভাবে এই ধরণের রেফারেন্স পেতে চান তবে আপনি ইউনিপ্রপ ইনস্টল করতে পারেন ।
ট্রিগ

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

19

প্রতীকগুলি '১২३' আসলে হিন্দি ভাষা থেকে উদ্ভূত হয়েছে (মূলত সংস্কৃত ভাষা থেকে অর্থাত্ দেবানগিরি থেকে) যা সংখ্যার মানগুলিকে উপস্থাপন করে যেমন:

১ উপস্থাপন ঘ

২ উপস্থাপন 2

এবং জ্ঞানী মত


4
সংশোধন: চিহ্নগুলি '১২३' আসলে সংস্কৃত ভাষা থেকে উদ্ভূত হয়েছে (যেমন, অন্যান্য পোস্টারগুলিতে যেমন দেবনাগিরি লিপিটি এসেছে)
হ্যাপি গ্রিন কিড নেপস

আমি অবাক হয়ে জানতে পেরেছিলাম যে সম্প্রতি দেবনাগার তার বর্তমান রূপটি কীভাবে গ্রহণ করেছিলেন - সংস্কৃতের কোড করার পরে বহু শতাব্দী পরে! সুতরাং আমি এই দাবী সম্পর্কে সন্দেহবাদী যে সাধারণভাবে ভারতীয় সংস্কৃতির চেয়ে অঙ্কগুলি সংস্কৃতের সাথে বেশি সম্পর্কিত pt
আন্তন শেরউড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.