根据数字系统类型返回创建相应的数字系统,默认为 mid NUMBERING_TYPES = ['low', 'mid', 'high']: 中文数字系统类型 low: '兆' = '亿' * '十' = $10^{9}$, '京' = '兆' * '十', etc. mid: '兆' = '亿' * '万' = $10^{12}$, '京' = '兆' * '万', etc. high: '兆' = '亿' * '亿' = $10^{16}$, '京' = '兆' * '兆', etc. 返回对应的数字系统
(numbering_type=NUMBERING_TYPES[1])
| 559 | # basic utils |
| 560 | # ================================================================================ # |
| 561 | def create_system(numbering_type=NUMBERING_TYPES[1]): |
| 562 | """ |
| 563 | 根据数字系统类型返回创建相应的数字系统,默认为 mid |
| 564 | NUMBERING_TYPES = ['low', 'mid', 'high']: 中文数字系统类型 |
| 565 | low: '兆' = '亿' * '十' = $10^{9}$, '京' = '兆' * '十', etc. |
| 566 | mid: '兆' = '亿' * '万' = $10^{12}$, '京' = '兆' * '万', etc. |
| 567 | high: '兆' = '亿' * '亿' = $10^{16}$, '京' = '兆' * '兆', etc. |
| 568 | 返回对应的数字系统 |
| 569 | """ |
| 570 | |
| 571 | # chinese number units of '亿' and larger |
| 572 | all_larger_units = zip( |
| 573 | LARGER_CHINESE_NUMERING_UNITS_SIMPLIFIED, |
| 574 | LARGER_CHINESE_NUMERING_UNITS_TRADITIONAL, |
| 575 | ) |
| 576 | larger_units = [ |
| 577 | CNU.create(i, v, numbering_type, False) for i, v in enumerate(all_larger_units) |
| 578 | ] |
| 579 | # chinese number units of '十, 百, 千, 万' |
| 580 | all_smaller_units = zip( |
| 581 | SMALLER_CHINESE_NUMERING_UNITS_SIMPLIFIED, |
| 582 | SMALLER_CHINESE_NUMERING_UNITS_TRADITIONAL, |
| 583 | ) |
| 584 | smaller_units = [ |
| 585 | CNU.create(i, v, small_unit=True) for i, v in enumerate(all_smaller_units) |
| 586 | ] |
| 587 | # digis |
| 588 | chinese_digis = zip( |
| 589 | CHINESE_DIGIS, |
| 590 | CHINESE_DIGIS, |
| 591 | BIG_CHINESE_DIGIS_SIMPLIFIED, |
| 592 | BIG_CHINESE_DIGIS_TRADITIONAL, |
| 593 | ) |
| 594 | digits = [CND.create(i, v) for i, v in enumerate(chinese_digis)] |
| 595 | digits[0].alt_s, digits[0].alt_t = ZERO_ALT, ZERO_ALT |
| 596 | digits[1].alt_s, digits[1].alt_t = ONE_ALT, ONE_ALT |
| 597 | digits[2].alt_s, digits[2].alt_t = TWO_ALTS[0], TWO_ALTS[1] |
| 598 | |
| 599 | # symbols |
| 600 | positive_cn = CM(POSITIVE[0], POSITIVE[1], "+", lambda x: x) |
| 601 | negative_cn = CM(NEGATIVE[0], NEGATIVE[1], "-", lambda x: -x) |
| 602 | point_cn = CM(POINT[0], POINT[1], ".", lambda x, y: float(str(x) + "." + str(y))) |
| 603 | # sil_cn = CM(SIL[0], SIL[1], '-', lambda x, y: float(str(x) + '-' + str(y))) |
| 604 | system = NumberSystem() |
| 605 | system.units = smaller_units + larger_units |
| 606 | system.digits = digits |
| 607 | system.math = MathSymbol(positive_cn, negative_cn, point_cn) |
| 608 | # system.symbols = OtherSymbol(sil_cn) |
| 609 | return system |
| 610 | |
| 611 | |
| 612 | def chn2num(chinese_string, numbering_type=NUMBERING_TYPES[1]): |
no test coverage detected