সি # তে দুটি দশমিক স্থানে গোল দ্বিগুণ?


258

আমি সি # তে দুটি দশমিক স্থানে দ্বিগুণ মান অর্জন করতে চাই আমি কীভাবে এটি করতে পারি?

double inputValue = 48.485;

রাউন্ড আপ পরে

inputValue = 48.49;

সম্পর্কিত: সি # - আমি কীভাবে একটি দশমিক মান 2 দশমিক স্থানে (কোনও পৃষ্ঠায় আউটপুট দেওয়ার জন্য) গোল করব?


নোট করুন যে আপনি ডাবল ব্যবহার করে সমস্ত ভাসমান পয়েন্টের মান উপস্থাপন করতে পারবেন না এবং গোল করার সময় এটি আপনাকে ট্রিপ করতে পারে
লিয়াম

উত্তর:


479

এইটা কাজ করে:

inputValue = Math.Round(inputValue, 2);

workaround to trunc float: float myTruncFloat = float.Parse (ম্যাথ.আরউন্ড (মাইফ্লোট, 2)। টোস্ট্রিং ());
পিয়েরো আলবার্তো

1
মানটি যদি 48.0000 হয়। এটির ফলে 48.00 হবে না। ডাবল ইনপুটভ্যালু = 48.00; ইনপুটভ্যালু = ম্যাথ। গোল (ইনপুটভ্যালু, 2); ফলাফল হবে 48। কোন যুদ্ধকাণ্ড?
ব্যবহারকারী 1926138

100
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

4
এটি আসলে ব্যবহার করা উচিত। ব্যাংকগুলিতে বেশিরভাগ অপারেশনগুলি এই পদ্ধতিটি (মিডপয়েন্টরাউন্ডিং.ওয়েফ্রোমজিরো) ব্যবহার করে করা হয়।
ম্যাডবয়

41
ব্যাঙ্কগুলি ডাবল ব্যবহারের পরামর্শ দেয় তা ভীতিজনক ছেলে, মুদ্রার জন্য অনুমানের মান ব্যবহার করবেন না।
রাগি

6
@ আরগি আমি ভয় করছি কিছু (ব্যাংক) করুক ... এতে প্রচুর স্টাফ ব্যাখ্যা হবে
স্পার্ক

4
হ্যাঁ আমি বিশ্বাস করি এটিই ছিল 'অফিস স্পেস' চলচ্চিত্রটি - সেন্টের ভগ্নাংশ বন্ধ করে দেওয়ার পরে যেটি কেউ খেয়াল করবে না। ইচ্ছামত কখন রাউন্ডিং ব্যবহার করবেন সে সম্পর্কে সতর্কতা অবলম্বন করা ভাল।
এটকনওয়ে

1
এবং মূল সুপারম্যান চলচ্চিত্রের প্লটের অংশ হিসাবে দীর্ঘকাল আগে ওয়াহে।
জেমস ওয়েস্টগেট

25

আপনার ব্যবহার করা উচিত

inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

Math.Round

গণিত.রাউন্ড একটি নির্দিষ্ট সংখ্যক ভগ্নাংশের অঙ্কের দ্বৈত-নির্ভুলতা ভাসমান-পয়েন্টের মানটিকে বৃত্তাকার করে।

MidpointRounding

গাণিতিক বৃত্তাকার পদ্ধতিগুলি দুটি সংখ্যার মধ্যবর্তী মধ্যবর্তী স্থানে কীভাবে প্রক্রিয়া করা উচিত তা সুনির্দিষ্ট করে।

মূলত উপরের ফাংশনটি আপনার ইনপুটমূল্যটি নিয়ে যাবে এবং এটি 2 (বা আপনি যে কোনও সংখ্যা নির্ধারণ করুন) দশমিক স্থানে পরিণত করবেন। সঙ্গে MidpointRounding.AwayFromZeroএকটি সংখ্যা দুইজন মধ্যে মাঝামাঝি থাকে, তখন তা দিকে বৃত্তাকার হয় নিকটতম সংখ্যা শূন্য থেকে যে দূরে। আরও একটি বিকল্প রয়েছে যা আপনি সেই রাউন্ডগুলি নিকটতম সমান সংখ্যার দিকেও ব্যবহার করতে পারেন


25

আর একটি সহজ উপায় হল প্যারামিটার সহ টোস্ট্রিং ব্যবহার করা। উদাহরণ:

float d = 54.9700F;    
string s = d.ToString("N2");
Console.WriteLine(s);

ফলাফল:

54.97

19

ম্যাথ.রাউন্ড ব্যবহার করুন

value = Math.Round(48.485, 2);

আমাকে এর সাথে প্রহার করুন (যদিও আমি সেখানে একটি আধা-কোলনও যুক্ত করেছিলাম;))
রিড কোপসি

1
তবে মিডপয়েন্ট রউন্ডিংয়ের সাথে সাবধানতা অবলম্বন করুন: "দশকের দশমিক পজিশনের ডানদিকে প্রথম সংখ্যাটির মান যদি 5 হয়, তবে অদ্বিতীয় অবস্থানে অঙ্কটি বিজোড় হলে গোল হয়, অথবা যদি সমান হয় তবে অপরিবর্তিত থাকে"
ম্যাথিয়াস

8

আপনি নীচে থেকে একটি চেষ্টা করতে পারেন this এর জন্য অনেকগুলি উপায় রয়েছে।

1. 
 value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
 inputvalue=Math.Round(123.4567, 2)  //"123.46"
3. 
 String.Format("{0:0.00}", 123.4567);      // "123.46"
4. 
string.Format("{0:F2}", 123.456789);     //123.46
string.Format("{0:F3}", 123.456789);     //123.457
string.Format("{0:F4}", 123.456789);     //123.4568

আমি চতুর্থ বিকল্প ব্যবহার করেছি। 6
জিরো

2

একটি বিভক্ত স্ট্রিং ব্যবহার করুন, এটি একটি বৃত্তাকার আপ স্ট্রিং উত্পন্ন করে:

var strlen = 6;
$"{48.485:F2}"

আউটপুট

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