স্ট্রিংকে সি # তে ভাসিয়ে তুলছে


108

আমি "41.00027357629127" এর মতো একটি স্ট্রিং রূপান্তর করছি এবং আমি ব্যবহার করছি;

Convert.ToSingle("41.00027357629127");

অথবা

float.Parse("41.00027357629127");

এই পদ্ধতিগুলি 4.10002732E + 15 ফেরত দেয়

আমি যখন ফ্লোতে রূপান্তর করি তখন আমি "41.00027357629127" চাই। এই স্ট্রিং একই হওয়া উচিত ...


1
আপনি কীভাবে জানেন যে এটি কী রূপান্তরিত হয় - এটিই আপনি সংখ্যাটি প্রদর্শন করছেন
মিমি মিমি

1
কোন ধারণা কেন এটি টসিং? এবং টুফ্লোট নয়?
লর্ড ডার্থ ভাদার

41.00027357629127 বৈজ্ঞানিক স্বরলিপিতে 4.10002732E + 15 হবে না, যদি না অবশ্যই আপনার সংস্কৃতি দশমিক পয়েন্টের পরিবর্তে দশমিক কমা ব্যবহার করে (এবং হাজার বিভাজক হিসাবে ডট), সুতরাং সংখ্যাটি আসলে পড়বে: 4100027357629127 ফলস্বরূপ 4.10002732E + 15 হিসাবে প্রদর্শিত হবে
ljgww

উত্তর:


229

আপনার থ্রেডের লোকেলটি এমন একটিতে সেট করা আছে যেখানে দশমিক চিহ্নটি "," এর পরিবর্তে "" হয়।

এটি ব্যবহার করার চেষ্টা করুন:

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);

তবে নোট করুন, যদিও কোনও ফ্লোটে এতগুলি অঙ্কের নির্ভুলতা রাখা যায় না। এটি করতে আপনাকে ডাবল বা দশমিক ব্যবহার করতে হবে।


35
using System.Globalization;অ্যাক্সেসে নেমস্পেস যুক্ত করতে ভুলবেন নাCultureInfo
পাওয়ার

24

প্রথমত, এটি আপনি ডিবাগারে যে সংখ্যাটি দেখেন তার কেবল একটি উপস্থাপনাfloatবাস্তব মান প্রায় (অনেক হিসাবে হিসাবে এটা সম্ভব) সঠিক হতে পারে।

দ্রষ্টব্য: ভাসমান পয়েন্ট সংখ্যা বনাম স্ট্রিংয়ের সাথে ডিল করার সময় সর্বদা কালচারআইনফো তথ্য ব্যবহার করুন ।

float.Parse("41.00027357629127",
      System.Globalization.CultureInfo.InvariantCulture);

এইটা শুধুমাত্র একটা উদাহরণ; আপনার ক্ষেত্রে উপযুক্ত সংস্কৃতি চয়ন করুন।


কীভাবে আমি আমার কালচারআইফোনটি বেছে নিতে পারি? আমি টার্কিতে আছি যেখানে TR টিআর-টিআর যুক্ত হবে?
মেহমেট

1
@Mehmetnew System.Globalization.CultureInfo("tr-TR")
sshow

20

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

float asd = (float) Convert.ToDouble("41.00027357629127");

4
এটি সঠিক উত্তর কেন দয়া করে কিছু প্রসঙ্গ সরবরাহ করুন।
বাস পিটর্স


4

ফ্লোটের যথার্থতা 7 ডিজিট। আপনি যদি পুরোটা রাখতে চান তবে আপনাকে দ্বিগুণ টাইপ ব্যবহার করতে হবে যা 15-16 সংখ্যা রাখে। ফর্ম্যাটিং সম্পর্কিত, ফর্ম্যাট ডাবলস সম্পর্কে একটি পোস্ট তাকান । এবং আপনাকে সি # তে দশমিক বিভাজক সম্পর্কে চিন্তা করতে হবে ।


ı ক্লান্ত দ্বিগুণ ars এটি ভাগ করুন 4100027357629127.0 এটি খুব খারাপ
মেহমেট

2
এটি '' এর মতো শোনাচ্ছে। চরিত্রটি আপনার লোকেলের দশমিক বিভাজক নয়? পরীক্ষা করে দেখুন stackoverflow.com/questions/3870154/c-sharp-decimal-separator
jpe

0

আপনি পারেন double.Parse("41.00027357629127");


আমি মনে করি না তিনি কীভাবে এটি গোল করবেন জিজ্ঞাসা করছেন।
বা ম্যাপার

-2

আরও নির্ভুলতার মান পাওয়ার জন্য আপনি ফ্লোটের পরিবর্তে ডাবল দিয়ে পার্সিং ব্যবহার করতে পারেন।

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