Y a-t-il une fonction en cours pour convertir une valeur numérique en mot ou une autre façon de le faire? Pour l'ex-1234 -> mille deux cent trente quatre. P>
3 Réponses :
non intégré, non. Vous devrez probablement écrire votre propre. P>
Ce sera (pas trop de tests effectués) jusqu'à 9999. Après cela, vous devrez l'élargir au travail.
DEFINE VARIABLE cNum2Words AS CHARACTER NO-UNDO EXTENT 20 INITIAL ["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eigteen","nineteen"]. DEFINE VARIABLE cTens AS CHARACTER NO-UNDO EXTENT 10 INITIAL ["","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"]. DEFINE VARIABLE cPostfix AS CHARACTER NO-UNDO EXTENT 10 INITIAL ["","","hundred","thousand","hundredthousand","million"]. FUNCTION num2word RETURN CHARACTER (INPUT piNum AS INTEGER): RETURN cNum2Words[piNum + 1]. END. FUNCTION num2words RETURNS CHARACTER (INPUT piNum AS INTEGER): DEFINE VARIABLE iStep AS INTEGER NO-UNDO. DEFINE VARIABLE cReturn AS CHARACTER NO-UNDO. DEFINE VARIABLE iPos AS INTEGER NO-UNDO. IF piNum >= 0 AND piNum <= 19 THEN RETURN num2Word(piNum). ELSE DO: DO iStep = LENGTH(STRING(piNum)) TO 1 BY -1: iPos = iPos + 1. IF iStep = 1 THEN DO: cReturn = cReturn + " " + num2word(INTEGER(SUBSTRING(STRING(piNum), iPos, 1))). END. ELSE IF iStep = 2 THEN DO: cReturn = cReturn + " " + cTens[INTEGER(SUBSTRING(STRING(piNum), iPos, 1))]. END. ELSE IF iStep > 2 AND iStep <= 6 THEN DO: cReturn = cReturn + " " + num2word(INTEGER(SUBSTRING(STRING(piNum), iPos, 1))) + " " + cPostfix[iStep]. END. END. END. RETURN creturn. END. MESSAGE num2words(9999) VIEW-AS ALERT-BOX .
J'ai creusé cela d'un coin (très) poussiéreux et j'ai mis à jour un peu:
Eh bien ... donc 10 000 000 est de 10 millions de milliers? Tests de l'unité Pesky. ABLDOJO.Services.Progress.com:443/#/...
Eh bien c'est embarrassant :(
Pour que cela soit encore meilleur - ce bogue est également dans le code non renvoyé et je soupçonne que cela pourrait également être dans les systèmes de production qui l'utilisent toujours.
Correction de bugs ajouté. Le bug original a été effectivement trouvé et fixé en 1994. Il a vécu pendant 6 ans avant d'être écrasé. Je suppose que le fait qu'il ait été repéré en moins d'une semaine ici montre le pouvoir de l'internet moderne :)
Voir ceci: Support .Office.com / fr-US / Article / ...
Voir Stackoverflow.com / Questions / 19504350 / ...