2012-08-27 9 views

Odpowiedz

14

Potrzebujesz, aby była to wartość zmiennoprzecinkowa, aby działała.

double thevalue = 6.33; 

Here's a demo. Teraz to tylko ciąg, więc ona być umieszczona jak jest. Jeśli chcesz go parsować, użyj double.Parse lub double.TryParse. (. Albo float lub decimal)

+0

Działa idealnie, ale zaokrąglałby liczby takie jak '0.155' do' 0.2'..Jest to jednak mały problem! – Anirudha

+0

@Airirha: http://stackoverflow.com/a/329982/707111 – Ryan

1

opcja 1 (niech to będzie ciąg znaków):

string thevalue = "6.33"; 
thevalue = string.Format("{0}", thevalue.Substring(0, thevalue.length-1)); 

opcja 2 (przekonwertować):

string thevalue = "6.33"; 
var thevalue = string.Format("{0:0.0}", double.Parse(theValue)); 

opcja 3 (odpalić RegEx):

var regex = new Regex(@"(\d+\.\d)"); // but that everywhere, maybe static 
thevalue = regexObj.Match(thevalue).Groups[1].Value; 
+1

i co jeśli 'wartość' będzie' "6.333" '? –

+0

okej ... sprawdź edytowany w kilka sekund .... – TheHe

+0

Nie ma ".Groups [1]". – Ryan

4

ToString() upraszcza zadanie. double.Parse(theValue).ToString("N1")

+0

działa idealnie, ale zaokrąglałby liczby takie jak 0.155 do 0.2..Jest to jednak mały problem! – Anirudha

4

Oto kilka różnych przykładów do rozważenia:

double l_value = 6; 
string result= string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

wyjściowa: 6,00

double l_value = 6.33333; 
string result= string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

wyjściowa: 6,33

double l_value = 6.4567; 
string result = string.Format("{0:0.00}", l_value); 
Console.WriteLine(result); 

wyjściowa: 6,46

+2

A chodzi o to ...? – Ryan

+1

Chodzi o to, aby dzielić się informacjami i pomagać ludziom, uznałem to za pomocne. – reggaeguitar

16

Oto kolejny sposób formatowania liczb zmiennoprzecinkowych, jak trzeba go:

string.Format("{0:F1}",6.33); 
1

innych odpowiedzi zaokrąglane w górę dla mnie, gdybym wybrał, powiedzmy, 6,39, lub nawet coś długo jak 6.398925. Takie podejście jest konwersja na łańcuch jak jest potem szukać miejsca po przecinku i zwraca tylko jeden numer po nim:

double val = 6.39; 
string truncatedString = val.ToString().Substring(0, val.ToString().IndexOf(".") + 2); 
Console.WriteLine(truncatedString); 
//returns 6.3 
0

Proszę to: String.Format („{0: 0,0}”, 123,4567); // return 123.5

Powiązane problemy