2011-11-15 18 views
14

(nie mógł znaleźć duplikat)Dlaczego specyfikator formatu procentowego mnoży się przez 100?

Czy ktoś wie dlaczego:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#PFormatString

'p' format string na procent, wielokrotność wartości przez 100 przed formatowaniem go ze znakiem procentu?

Procent ("P") Format Specyfikator

Procent ("P") w formacie numeru specyfikator mnoży przez 100 i przekształca je na ciąg znaków, który reprezentuje wartość procentową. Precyzyjna specyfikacja wskazuje żądaną liczbę miejsc dziesiętnych. Jeśli specyfikator precyzji zostanie pominięty, zostanie użyta domyślna precyzja numeryczna dostarczona przez bieżącą właściwość PercentDecimalDigits.

Czy mimo to można przed pomiarem pomnożyć wartość przez 100? Zamiast robić:

(value/100).ToString("p") 
+4

Zwykle używasz procentów dziesiętnych w kodzie (np. '0.5' ->' 50% '). Użytkownik lubi widzieć ładne liczby całkowite ze znakiem procentu, co jest funkcją tej funkcji. – Blender

+1

@Blender: Zazwyczaj nie, zawsze! – leppie

+1

Procent => Per Cent (per centum co oznacza "na sto" po łacinie), źródło wiki, http://en.wikipedia.org/wiki/Percentage –

Odpowiedz

18

Co do dlaczego, „procent” oznacza dosłownie „poza stu”, a więc 50% jest matematycznie równoważne 0.50. Co do formatowania, dlaczego nie chcesz dodać znaku procentu?

value + "%" 

... albo coś w tym rodzaju:

value.ToString("#.00\\%") 
+3

Wykorzystanie znaku procentowego jest specyficzne dla kultury, niektóre kultury umieszczają je na początku, niektóre na końcu, niektóre określają 50%, a nie 50% itd. Więc chcesz sformatować do wartości procentowej. – Phill

+2

@ Hill: Co dokładnie napędza Twoje wymagania? Na przykład, dlaczego nie chcesz podzielić liczby przez 100 przed formatowaniem? Czy to tylko jakiś arbitralny wymóg, który wymyśliłeś, czy też jest za tym jakieś rozumowanie? – StriplingWarrior

+2

@Phill Ze względu na edukację, aby przezwyciężyć to, można użyć 'CurrentUICulture.NumberFormatInfo', i użyć tej informacji, aby utworzyć własne formatowanie zgodne z kulturą (jak to robi' ToString', bez podziału). Chłopcze, czy to nie brzmi jak zabawa? –

5

można normalnie pracować procentach przecinku wewnątrz kodu, jak i 1.00.5, ale użytkownik lubi widzieć ładne liczb całkowitych ze znakiem procentu przyczepione na końcu.

Procent oznacza "z 100" i wyraźnie Twoje dziesiętne procenty są poza 1. Dlatego .ToString("p") mnoży liczbę przez 100, a następnie dołącza znak procentu.

To tylko definicja.

+0

Co oznacza "twoja funkcja" w Twojej odpowiedzi? – Gabe

+2

Chcę Ci pomóc! :) – leppie

+0

@Gabe: Będę trochę bardziej gadatliwy, przepraszam. – Blender

1

Jeśli nie chcesz, aby pomnożyć przez wartość 100, tylko żeby procentowy% oprócz wprowadzona wartość, tj VALUE.00%, jeśli wartość wprowadzona inaczej domyślnie 0,00%, to odpowiedź brzmi

PERCENTAGE_FORMAT = "# 0.00 \%";

To zdecydowanie zadziałało dla mnie !!

+0

Pytanie brzmiało ** dlaczego ** to zachowanie występuje, a nie jak poprawnie go sformatować. –

+0

To mogło nie odpowiedzieć na pytanie, ale uznałem, że jest to wartościowe, więc daj mi +1 – CarllDev

Powiązane problemy