42
42
43
43
class Num2Word_AR (Num2Word_Base ):
44
44
errmsg_toobig = "abs(%s) must be less than %s."
45
- MAXVAL = 1000000000000000050331649 # 10 **36
45
+ MAXVAL = 9999999999999999999999999999999999999999999999999 # 1000000000000000050331649 # 10 **36
46
46
47
47
def __init__ (self ):
48
48
super ().__init__ ()
@@ -79,26 +79,37 @@ def __init__(self):
79
79
self .arabicHundreds = [
80
80
"" , "مائة" , "مئتان" , "ثلاثمائة" , "أربعمائة" , "خمسمائة" , "ستمائة" ,
81
81
"سبعمائة" , "ثمانمائة" , "تسعمائة"
82
- ]
82
+ ] # should be : ["تسعة مائة","ثمانية مائة","سبعة مائة","ستة مائة","خمسة مائة","أربعة مائة","ثلاثة مائة","مئتان","مائة"]
83
+
83
84
self .arabicAppendedTwos = [
84
85
"مئتا" , "ألفا" , "مليونا" , "مليارا" , "تريليونا" , "كوادريليونا" ,
85
- "كوينتليونا" , "سكستيليونا"
86
+ "كوينتليونا" , "سكستيليونا" ,"سبتيليونا" ,"أوكتيليونا " ,"نونيليونا" ,
87
+ "ديسيليونا" ,"أندسيليونا" ,"دوديسيليونا" ,"تريديسيليونا" ,"كوادريسيليونا" ,
88
+ "كوينتينيليونا"
86
89
]
87
90
self .arabicTwos = [
88
91
"مئتان" , "ألفان" , "مليونان" , "ملياران" , "تريليونان" ,
89
- "كوادريليونان" , "كوينتليونان" , "سكستيليونان"
92
+ "كوادريليونان" , "كوينتليونان" , "سكستيليونان" ,"سبتيليونان" ,
93
+ "أوكتيليونان " ,"نونيليونان " ,"ديسيليونان" ,"أندسيليونان" ,
94
+ "دوديسيليونان" ,"تريديسيليونان" ,"كوادريسيليونان" ,"كوينتينيليونان"
90
95
]
91
96
self .arabicGroup = [
92
97
"مائة" , "ألف" , "مليون" , "مليار" , "تريليون" , "كوادريليون" ,
93
- "كوينتليون" , "سكستيليون"
98
+ "كوينتليون" , "سكستيليون" ,"سبتيليون" ,"أوكتيليون" ,"نونيليون" ,
99
+ "ديسيليون" ,"أندسيليون" ,"دوديسيليون" ,"تريديسيليون" ,"كوادريسيليون" ,
100
+ "كوينتينيليون"
94
101
]
95
102
self .arabicAppendedGroup = [
96
103
"" , "ألفاً" , "مليوناً" , "ملياراً" , "تريليوناً" , "كوادريليوناً" ,
97
- "كوينتليوناً" , "سكستيليوناً"
104
+ "كوينتليوناً" , "سكستيليوناً" ,"سبتيليوناً" ,"أوكتيليوناً" ,"نونيليوناً" ,
105
+ "ديسيليوناً" ,"أندسيليوناً" ,"دوديسيليوناً" ,"تريديسيليوناً" ,"كوادريسيليوناً" ,
106
+ "كوينتينيليوناً"
98
107
]
99
108
self .arabicPluralGroups = [
100
109
"" , "آلاف" , "ملايين" , "مليارات" , "تريليونات" , "كوادريليونات" ,
101
- "كوينتليونات" , "سكستيليونات"
110
+ "كوينتليونات" , "سكستيليونات" ,"سبتيليونات" ,"أوكتيليونات" ,"نونيليونات" ,
111
+ "ديسيليونات" ,"أندسيليونات" ,"دوديسيليونات" ,"تريديسيليونات" ,"كوادريسيليونات" ,
112
+ "كوينتينيليونات"
102
113
]
103
114
assert len (self .arabicAppendedGroup ) == len (self .arabicGroup )
104
115
assert len (self .arabicPluralGroups ) == len (self .arabicGroup )
@@ -209,8 +220,16 @@ def process_arabic_group(self, group_number, group_level,
209
220
210
221
return ret_val
211
222
223
+ def abs (self , number ):
224
+ return number if number >= 0 else - number
225
+
226
+ def to_str (self , number ):
227
+ integer = int (number )
228
+ decimal = round ((number - integer ) * 10 ** 9 )
229
+ return str (integer ) + "." + "{:09d}" .format (decimal )
230
+
212
231
def convert (self , value ):
213
- self .number = "{:.9f}" . format (value )
232
+ self .number = self . to_str (value )
214
233
self .number_to_arabic (self .arabicPrefixText , self .arabicSuffixText )
215
234
return self .convert_to_arabic ()
216
235
@@ -346,7 +365,7 @@ def to_ordinal(self, number, prefix=''):
346
365
self .currency_unit = ('' , '' , '' , '' )
347
366
self .arabicPrefixText = prefix
348
367
self .arabicSuffixText = ""
349
- return "{}" .format (self .convert (abs (number )).strip ())
368
+ return "{}" .format (self .convert (self . abs (number )).strip ())
350
369
351
370
def to_year (self , value ):
352
371
value = self .validate_number (value )
@@ -367,4 +386,4 @@ def to_cardinal(self, number):
367
386
self .arabicPrefixText = ""
368
387
self .arabicSuffixText = ""
369
388
self .arabicOnes = ARABIC_ONES
370
- return minus + self .convert (value = abs (number )).strip ()
389
+ return minus + self .convert (value = self . abs (number )).strip ()
0 commit comments