webForumDet fria alternativet

double blir felformaterad i sträng

.NET

3 svar · 144 visningar · startad av Jon

Medlem sedan juli 20011 304 inlägg
Frågan#1

Nu står det rejält stilla i huvudet.

Jag bygger upp en Insert into - sträng.
Problemet är att jag har en double, låt oss säga 2,5 som ska in.

Värdet ligger i en klass och om man debuggar så är värder {2.5} precis som det ska. När jag sen lägger in det i en stringbuilder för mitt insert-uttryck så blr det automatiskt "2,5" vilket naturligtvis inte alls går bra.

Resultatet blir ju då något i stil med:
"Insert Into Tabellnamn [Col1], [col2], [col3] Values (3, 2,5, 'kalle')"

Jag vill förstås att det ska vara:
"Insert Into Tabellnamn [Col1], [col2], [col3] Values (3, 2.5, 'kalle')"

Det måste alltså vara när jag gör sb.Append(item.value) som 2.5 blir till 2,5.

Hur tänka?

Medlem sedan dec. 20003 563 inlägg
#2

Hmm. 2.5 skall det ju vara som sagt.
En Fuling är väl att parsa till string och köra replace.

sb.Append(String.Parse(item.value).replace(",", "."))

Observera det versala "F" på Fuling. ;)

Medlem sedan juli 20011 304 inlägg
#3

Det har du ju så rätt i! :)

Jag får Fulköra så tills jag hittar på en elegantare lösning.
Danke.

Medlem sedan dec. 2000399 inlägg
#4

Här kommer en lösning. Den är dock ganska omständig.

using System;
using System.Text;
using System.Globalization;
using System.Threading;

public class TestString {
	public static void Main(string[] args) {
		Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
		
		StringBuilder sb = new StringBuilder();
		double n = 2.5;
		sb.Append(n);
		
		Console.WriteLine("Innehall: {0}", sb.ToString());
		Console.WriteLine("Kultur: {0}", CultureInfo.CurrentCulture.Name);
	}
}

Det borde gå att använda StringBuilder.AppendFormat på något sätt men jag vet inte exakt hur.

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)