Da numero a testo
Moderatore: Moderatori
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
Da numero a testo
Ne ho voluto scrivere una anch'io...
Codice: Seleziona tutto
/*
NumeroInLettere ( number ) Custom Function
Scrive in lettere numeri fino al massimo di 999.999.999.999,99 cioè:
novecentonovantanovemiliardinovecentonovantanovemilioninovecentonovantanovemilanovecentonovantanove/99
( 12 cifre + 2 decimali )
Daniele Raybaudi
*/
Case(
number ≤ 10^12 - 1 + ,99 ;
Let([
t = Substitute ( NumToJText ( Int ( number ) ; 1 ; 0 ) ; "," ; ¶ ) ;
decimali = Mod ( Abs ( number ) ; 1 ) ;
$i_NumeroInLettereCF = $i_NumeroInLettereCF + 1 ;
v = ValueCount ( t ) - $i_NumeroInLettereCF ;
n = GetAsNumber ( GetValue ( t ; $i_NumeroInLettereCF ) ) ;
result =
If ( Div ( n ; 100 ) ; Choose ( Div ( n ; 100 ) ; "" ; "" ; "due" ; "tre" ; "quattro" ; "cinque" ; "sei" ; "sette" ; "otto" ; "nove" ) & "cento" )
&
Case(
Mod ( n ; 100 ) < 20 ; Choose ( Mod ( n ; 100 ) ; "" ; "uno" ; "due" ; "tre" ; "quattro" ; "cinque" ; "sei" ; "sette" ; "otto" ; "nove" ; "dieci" ; "undici" ; "dodici" ; "tredici" ; "quattordici" ; "quindici" ; "sedici" ; "diciassette" ; "diciotto" ; "diciannove" ) ;
Mod ( n ; 100 ) < 30 ; "vent" & Choose ( Right ( Mod ( n ; 100 ) ; 1 ) ; "i" ; "uno" ; "idue" ; "itre" ; "iquattro" ; "icinque" ; "isei" ; "isette" ; "otto" ; "inove" ) ;
Choose ( Left ( Mod ( n ; 100 ) ; 1 ) ; "" ; "" ; "" ; "trent" ; "quarant" ; "cinquant" ; "sessant" ; "settant" ; "ottant" ; "novant" ) & Choose ( Right ( Mod ( n ; 100 ) ; 1 ) ; "a" ; "uno" ; "adue" ; "atre" ; "aquattro" ; "acinque" ; "asei" ; "asette" ; "otto" ; "anove" )
)
];
Case(
$i_NumeroInLettereCF < ValueCount ( t ) ; If ( n > 1 ; result ) & Case ( v = 3 and n = 1 ; "unmiliardo" ;
v = 3 and n ; "miliardi" ;
v = 2 and n = 1 ; "unmilione" ;
v = 2 and n ; "milioni" ;
v = 1 and n = 1 ; "mille" ;
v = 1 and n ; "mila"
) & NumeroInLettere ( number ) ;
result & If ( not t ; "zero" ) & "/" & Left ( Substitute ( decimali ; Left ( 1/2 ; 1 ) ; "" ) & "00" ; 2 ) & Let( $i_NumeroInLettereCF = "" ; "" )
)
) ;
"Errore: numero troppo alto"
)
Raybaudi FMP 12 Adv. Windows XP SP3
-
- Messaggi: 1197
- Iscritto il: domenica 12 marzo 2006, 1:00
- Versione FileMaker: 18
- Sistema operativo: Win10
- Località: Reggio Calabria (RC)
- PIG-NAH
- Messaggi: 2564
- Iscritto il: martedì 7 agosto 2007, 2:00
- Località: BIG BANG
Re: Da numero a testo
Casi ( number ≤ 10^15 - 1 + ,99 ;
Variando da 10^12 a 10^15 e aggiungendo i seguenti 3 passaggi al calcolo:
v = 4 and n = 1 ; "mille" ;
v = 4 and n ; "mila" ;
v = 3 and n = 1 and ConteggioValore ( t ) > 4 ; "unomiliardi" ;
Si aggiunge una ricorrenza alla CF del mitico Ray ( da v=3 a v=4 ) e adesso va bene pure per il debito pubblico italiano
Variando da 10^12 a 10^15 e aggiungendo i seguenti 3 passaggi al calcolo:
v = 4 and n = 1 ; "mille" ;
v = 4 and n ; "mila" ;
v = 3 and n = 1 and ConteggioValore ( t ) > 4 ; "unomiliardi" ;
Si aggiunge una ricorrenza alla CF del mitico Ray ( da v=3 a v=4 ) e adesso va bene pure per il debito pubblico italiano
FM8 ADV XP SP3
-
- Messaggi: 4
- Iscritto il: giovedì 21 dicembre 2023, 14:50
- Versione FileMaker: 19
- Sistema operativo: Windows
Re: Da numero a testo
Perchè?