के साथ बड़ी संख्या स्वरूपण करना मुझे 4,316,000 जैसे "4.3 मीटर" के रूप में बड़ी संख्या में प्रारूपित करने की आवश्यकता है।.NET
मैं इस सी # में कर सकते हैं?
के साथ बड़ी संख्या स्वरूपण करना मुझे 4,316,000 जैसे "4.3 मीटर" के रूप में बड़ी संख्या में प्रारूपित करने की आवश्यकता है।.NET
मैं इस सी # में कर सकते हैं?
आप Log10 का उपयोग सही तोड़ निर्धारित करने के लिए कर सकते हैं। कुछ इस तरह काम कर सकता था:
double number = 4316000;
int mag = (int)(Math.Floor(Math.Log10(number))/3); // Truncates to 6, divides to 2
double divisor = Math.Pow(10, mag*3);
double shortNumber = number/divisor;
string suffix;
switch(mag)
{
case 0:
suffix = string.Empty;
break;
case 1:
suffix = "k";
break;
case 2:
suffix = "m";
break;
case 3:
suffix = "b";
break;
}
string result = shortNumber.ToString("N1") + suffix; // 4.3m
के लिए मतदान किया चाहता है नहीं करता है, तो सत्य। –
को ओकाम के रेज़र दृष्टिकोण से प्यार होना चाहिए! – code4life
डिवाइड 1,000,000.0 द्वारा संख्या है, तो एक "एम" जोड़ देते हैं।
1 दशमलव स्थान तक संख्या पूर्णांक बनाना याद है।
इस काम करता है अगर यह हमेशा लाखों लोगों की क्या करने की कोशिश कर रहा है, लेकिन वह हजारों, लाखों, करोड़ों-अरबों आदि –
सवाल 4,316,000 के रूप में "4.3M" की तरह संख्या के बारे में पूछा गया तो अन्य प्रारूपों जरूरतों के मामले में नहीं थे :) –
long valueToFormat = 4316000;
var dict = new Dictionary<long, string>() {
{1000000000, "b"},
{1000000, "m"},
{1000, "k"}
};
string formattedValue = valueToFormat.ToString();
foreach (long n in dict.Keys.OrderBy(k => k)) {
if (valueToFormat < n) {
continue;
}
double value = Math.Round(valueToFormat/(double)n, 1);
formattedValue = String.Format("{0}{1}", value, dict[n]);
}
Console.WriteLine(formattedValue);
आप केवल Windows पर चला रहे हैं आप C# या VB.NET में एक पी आह्वान घोषणा इस्तेमाल कर सकते हैं कॉल करने के लिए कार्य करता है Win32 StrFormatByteSizeW या StrFormatByteSize64। यदि आपके एप्लिकेशन/साइट को कम से कम Vista SP1 या Server 2008 पर चलने की गारंटी है तो कुछ और विकल्पों के साथ StrFormatByteSizeEx भी है। MSDN डॉक्स से
नमूना:
Numeric value Text string
532 532 bytes
1340 1.30KB
23506 22.9KB
2400016 2.29MB
2400000000 2.23GB
ये API भी गैर अंग्रेजी उपयोगकर्ताओं के लिए सही ढंग से स्थानीयकरण संभाल।
यह "4.3M" के रूप में 4,316,000 करना होगा नहीं, जैसे प्रश्न पूछा है, बल्कि "4.12MB" –
ओह, प्रश्न, द्विआधारी divisors के बारे में के रूप में दशमलव divisors के बजाय पढ़ें। – devstuff
public static class Program
{
private static void Main(string[] args)
{
double[] numbers =
{
3000, 3300, 3333, 30000, 300000, 3000000, 3000003, 0.253, 0.0253, 0.00253, -0.253003
};
foreach (var num in numbers)
{
Console.WriteLine($"{num} ==> {num.Humanize()}");
}
Console.ReadKey();
}
public static string Humanize(this double number)
{
string[] suffix = {"f", "a", "p", "n", "μ", "m", string.Empty, "k", "M", "G", "T", "P", "E"};
var absnum = Math.Abs(number);
int mag;
if (absnum < 1)
{
mag = (int) Math.Floor(Math.Floor(Math.Log10(absnum))/3);
}
else
{
mag = (int) (Math.Floor(Math.Log10(absnum))/3);
}
var shortNumber = number/Math.Pow(10, mag*3);
return $"{shortNumber:0.###}{suffix[mag + 6]}";
}
}
यह चाहिए उत्पादन:
3000 ==> 3k
3300 ==> 3,3k
3333 ==> 3,333k
30000 ==> 30k
300000 ==> 300k
3000000 ==> 3M
3000003 ==> 3M
0,253 ==> 253m
0,0253 ==> 25,3m
0,00253 ==> 2,53m
-0,253003 ==> -253,003m
उम, प्रोग्रामिंग भाषा? प्लेटफार्म? यहां हमें मदद करें। संक्षिप्त उत्तर यह है: आवश्यकताओं के आधार पर मूल्यों की विभिन्न श्रेणियों को प्रारूपित करने के लिए कुछ कोड लिखें। –
@Jim: सी # प्रश्न के लिए टैग में है। प्रश्न थोड़ा और स्पष्ट करके मदद कर सकता है। –
जिम एक ट्रोल है! –