Avatar billede william_munny Nybegynder
10. januar 2006 - 12:05 Der er 10 kommentarer og
1 løsning

Formater double som regional settings

Hej eksperter,
har en klient der skal vise nogle double værdier. Disse skal formateres efter regional settings. Jeg har prøvet

Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(Locale.getDefault());
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " + Locale.getDefault().toString());

Som giver mig
345.987,246 da_DK

Men min decimal seperator er angivet til punktum ikke komma i Regional settings i Windows.

Køre Java 1.4.2_06
Avatar billede arne_v Ekspert
10. januar 2006 - 12:39 #1
resultatet er logisk

Locale.getDefault() henter dansk locale fordi din PC generelt er sat til dansk

NumberFormat.getNumberInstance(Locale.getDefault()) henter så en formatering til dansk

intet kigger på dine faktiske settings
Avatar billede arne_v Ekspert
10. januar 2006 - 12:41 #2
det løser selvfølgelig ikke dit problem

jeg ved ikke engang om dit problem kan løses i Java
Avatar billede william_munny Nybegynder
10. januar 2006 - 13:07 #3
Troede Locale.getDefault() var mine valgte settings damn. Så løsningen ville være at lave mit eget Locale som folk skal enes om.... Oh No....
Avatar billede arne_v Ekspert
10. januar 2006 - 13:14 #4
hvis du kigger på Locale klassen så vil du se at den kun indeholder land, sprog,
diverse forkortelser for land etc. - overforsimplet indeholder Locale.getDefault()
en String med "da-DK"

alt det spændende slåes op ved hjælp af Locale men indeholdes ikke i Locale
Avatar billede william_munny Nybegynder
10. januar 2006 - 14:28 #5
Ok med locale mente jeg egentlig bare nogle formaterings masker. Kunne man rode sig ud i noget JNI eller er det bare at komplicere tingene?
Avatar billede arne_v Ekspert
10. januar 2006 - 14:42 #6
hvsu du kan find einfo i registry så er et JNI kald til at hente det lige
ud af landevejen
Avatar billede arne_v Ekspert
10. januar 2006 - 14:43 #7
hvis du kan finde info i ...
Avatar billede william_munny Nybegynder
10. januar 2006 - 14:48 #8
HKEY_USERS/.Default/Control Panel/International/sDecimal, er det noget du ligge inde med som exempel? :-)
Avatar billede arne_v Ekspert
07. april 2006 - 04:57 #9
jeg har det her stykke C kode liggende:

void getinfo(char *key, char *name, char *info)
{
  HKEY hk;
  if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &hk) == ERROR_SUCCESS)
  {
    DWORD valuelen,type;
    BYTE value[1024];
    valuelen = sizeof(value);
    if(RegQueryValueEx(hk, name, NULL, &type, value, &valuelen) == ERROR_SUCCESS)
    {
        strcpy(info,(char *)value);
    }
  }
  RegCloseKey(hk);
}

det bør kunne wrappes i noget JNI
Avatar billede william_munny Nybegynder
19. april 2006 - 09:51 #10
Smid et svar Arne, desværre har jeg ikke haft tid til at rode med det så en mindre kompliceret løsning er blevet implementeret.
Avatar billede arne_v Ekspert
19. april 2006 - 12:46 #11
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester