کتابخانه‌ی استاندارد · پایه

تبدیل conv

تبدیل عدد و مقدار منطقی به متن و برعکس، با پشتیبانی از رقم‌های فارسی و خطا برای متنی که عدد نیست.

واردسازی تبدیل

نام آرگومان‌ها شناسه‌ی خود کد است و معادل فارسی ندارد؛ گونه‌ها، کلیدواژه‌ها و نام بسته‌ها با معادل فارسی نوشته می‌شوند.

متنی که از کاربر، پرونده یا شبکه می‌رسد همیشه رشته است؛ برای حساب کردن باید آن را به عدد تبدیل کنید، و برای نمایش نتیجه دوباره به متن. بسته‌ی تبدیل هر دو سوی این کار را انجام می‌دهد.

تابع‌های تجزیه رقم‌های فارسی (۰۱۲۳۴۵۶۷۸۹) و عربی (٠١٢٣٤٥٦٧٨٩) را هم می‌فهمند، پس عددی که کاربر فارسی‌زبان تایپ می‌کند بی‌دردسر خوانده می‌شود. فاصله، تب و شکست خط در دو سوی متن نادیده گرفته می‌شود و یک علامت + یا - می‌تواند اول بیاید. هر چیز دیگری باعث می‌شود تابع به جای حدس زدن یک خطا پرتاب کند: رشته‌ی خالی، نویسه‌ی اضافه مثل abc در 12abc، علامتی که رقمی پس از آن نیست، یا عددی که در نوعش جا نمی‌شود. خطا را با تلاش: ... گرفتن خطا خ: بگیرید، یا در تابعی که خودش خطادار است با تلاش به بالا بفرستید.

اگر مقدار نادرست باید بی‌سروصدا به یک پیش‌فرض تبدیل شود، شکل «با پیش فرض» همان تابع را به کار ببرید: تجزیه عدد با پیش فرض، رشته به عدد با پیش فرض، تجزیه اعشار با پیش فرض، تجزیه منطقی با پیش فرض و تجزیه شانزده با پیش فرض مقدار جایگزین را در آرگومان دوم می‌گیرند و هیچ‌وقت خطا پرتاب نمی‌کنند.

قالب بندی نیمه‌ی قالب‌بندی همین بسته را با پرکردن و قالب رشته در اختیارتان می‌گذارد؛ وقتی به نیمه‌ی تجزیه یا یکی از سه قالب اعشاری پایین نیاز دارید، سراغ تبدیل بیایید. تابع‌های رشته‌ای به صحیح و به اعشار همان خواننده‌های قدیمی و سهل‌گیرند: چیزی گزارش نمی‌دهند و برای متنی که عدد نیست صفر برمی‌گردانند، پس برای هر چیزی که کاربر تایپ کرده تابع‌های همین بسته را ترجیح دهید.

چند نکته که معمولاً غافلگیر می‌کند:

  • رشته به عدد یک صحیح برمی‌گرداند که ۳۲ بیتی است؛ پس رشته به عدد("3000000000") خطای خارج از بازه پرتاب می‌کند. برای شناسه، اندازه و برچسب زمانی تجزیه عدد را به کار ببرید.
  • جداکننده رقم نیست: 1_000، 1 000 و 1,000 همه خطا می‌دهند و ممیز هم در تجزیه عدد خطاست.
  • تجزیه منطقی به بزرگی و کوچکی حرف حساس است: True و YES خطا می‌دهند.
  • ویرگول جداکننده‌ی اعشار نیست: تجزیه اعشار("1,5") خطا می‌دهد. ممیز فارسی ٫ پذیرفته است.
  • خطا جای مشکل را می‌گوید. خ.نوع یکی از نحو و خارج از بازه است، خ.کد یکی از conv.empty، conv.no_digits، conv.invalid_char، conv.not_bool و conv.overflow، و خ.جایگاه، خ.خط و خ.ستون به نویسه‌ی نادرست اشاره می‌کنند.

رد کردن ورودی نادرست کاربر

یک فرم باید 12abc یا فیلد خالی را نپذیرد و به کاربر بگوید چرا. تجزیه عدد این بررسی را خودش انجام می‌دهد: آن را در تلاش: بگذارید و پیام خطا را نشان دهید.

conv-guide-strict.salam
واردسازی تبدیل

تابع ریشه:
    هر نوشته در ["42"، " ۱۴۰۳ "، "+7"، "12abc"، ""، "-0015"، "99999999999999999999"]:
        تلاش:
            ع := تبدیل.تجزیه عدد(نوشته)
            سرچاپ "[" + نوشته + "]"، "یعنی"، ع
        گرفتن خطا خ:
            سرچاپ "[" + نوشته + "]"، "پذیرفته نشد:"، خ.پیام، "در ستون"، خ.ستون
        پایان
    پایان
پایان
خروجی[42] یعنی 42 [ ۱۴۰۳ ] یعنی 1403 [+7] یعنی 7 [12abc] پذیرفته نشد: invalid character 'a' در ستون 3 [] پذیرفته نشد: empty input در ستون 1 [-0015] یعنی -15 [99999999999999999999] پذیرفته نشد: number does not fit in 64 bits در ستون 1

رقم‌های فارسی و فاصله‌های دور ۱۴۰۳ همان‌طور که هستند پذیرفته می‌شوند و صفرهای پیشرو، مثل -0015، هم اشکالی ندارند. خ.پیام نویسه‌ای را که عدد را خراب کرده نام می‌برد و خ.ستون جایش را می‌گوید تا کاربر پیدایش کند. عددی بیرون از بازه‌ی ۶۴ بیتی خطای خارج از بازه می‌دهد، نه مقداری که دور زده باشد.

جمع زدن عددهایی با رقم‌های گوناگون

متنی که از جاهای مختلف چسبانده می‌شود اغلب رقم انگلیسی، فارسی و عربی را با هم دارد و ممیز را گاهی . و گاهی جداکننده‌ی فارسی ٫ می‌نویسد. تابع‌های تجزیه همه‌ی این‌ها را می‌پذیرند، پس پیش از محاسبه هیچ پاک‌سازی‌ای لازم نیست.

conv-guide-sum.salam
واردسازی تبدیل
واردسازی رشته

تابع ریشه خطادار:
    خط := "۱۲ 7 ٣٠ 4.5 ۰٫۵"
    تکه‌ها := رشته.واژه ها(خط)
    دیرکن تکه‌ها.آزادکن()
    ناپایا جمع صحیح := ۰ برگردان صحیح۶۴
    ناپایا جمع دقیق := ۰.۰
    هر تکه در تکه‌ها:
        جمع صحیح += تبدیل.تجزیه عدد با پیش فرض(تکه، ۰)
        جمع دقیق += تلاش تبدیل.تجزیه اعشار(تکه)
    پایان
    سرچاپ "تعداد عددها:"، تکه‌ها.طول()
    سرچاپ "جمع بخش‌های صحیح:"، جمع صحیح
    سرچاپ "جمع دقیق:"، تبدیل.قالب اعشار کوتاه(جمع دقیق)
پایان
خروجیتعداد عددها: 5 جمع بخش‌های صحیح: 49 جمع دقیق: 54

عدد صحیح ممیز ندارد، پس تجزیه عدد متن‌های 4.5 و ۰٫۵ را نمی‌پذیرد؛ این‌جا تجزیه عدد با پیش فرض آن‌ها را صفر حساب می‌کند و برای همین دو جمع با هم فرق دارند. هر جا مقدار ممکن است بخش اعشاری داشته باشد، از تجزیه اعشار استفاده کنید. قالب اعشار کوتاه نتیجه را بدون .0 اضافه یا دنباله‌ی بلند رقم‌ها چاپ می‌کند.

مقدار منطقی و شانزده‌شانزدهی از پرونده‌ی تنظیمات

پرونده‌های تنظیمات کلیدهای روشن و خاموش را به شکل‌های زیادی می‌نویسند. تجزیه منطقی مقدارهای true، 1، yes و on را درست و false، 0، no و off را نادرست می‌خواند، با حروف کوچک و هر فاصله‌ای دورشان؛ هر چیز دیگری خطا می‌دهد. اگر کلیدی که اشتباه نوشته شده باید خاموش بماند، تجزیه منطقی با پیش فرض با پیش‌فرض نادرست همین کار را می‌کند. تجزیه شانزده رنگ، نقاب بیتی و شناسه‌هایی را که در مبنای شانزده نوشته شده‌اند، با حرف کوچک یا بزرگ، می‌خواند.

conv-guide-settings.salam
واردسازی تبدیل
واردسازی رشته

تابع ریشه خطادار:
    خام := نگاشت {} برگردان نگاشت<رشته، رشته>
    دیرکن خام.آزادکن()
    خام.درج("اشکال‌زدایی"، " yes ")
    خام.درج("حافظه نهان"، "0")
    خام.درج("رنگ"، "#1E90FF")
    خام.درج("سقف"، "۲۵۰")
    خام.درج("فشرده‌سازی"، "Yes")
    اشکال زدایی := تلاش تبدیل.تجزیه منطقی(خام.بگیر("اشکال‌زدایی"))
    نهان := تلاش تبدیل.تجزیه منطقی(خام.بگیر("حافظه نهان"))
    فشرده := تبدیل.تجزیه منطقی با پیش فرض(خام.بگیر("فشرده‌سازی")، نادرست)
    رنگ := تلاش تبدیل.تجزیه شانزده(رشته.حذف پیشوند(خام.بگیر("رنگ")، "#"))
    سقف := تلاش تبدیل.رشته به عدد(خام.بگیر("سقف"))
    سرچاپ "اشکال‌زدایی:"، تبدیل.قالب منطقی(اشکال زدایی)، "حافظه‌ی نهان:"، تبدیل.قالب منطقی(نهان)، "فشرده‌سازی:"، تبدیل.قالب منطقی(فشرده)
    سرچاپ "سرخ:"، رنگ >> ۱۶، "سبز:"، (رنگ >> ۸) & ۲۵۵، "آبی:"، رنگ & ۲۵۵
    سرچاپ "دو برابر سقف:"، سقف * ۲
    سرچاپ "رنگ دوباره در مبنای شانزده:"، تبدیل.قالب شانزده(رنگ برگردان طبیعی۶۴)
پایان
خروجیاشکال‌زدایی: true حافظه‌ی نهان: false فشرده‌سازی: false سرخ: 30 سبز: 144 آبی: 255 دو برابر سقف: 500 رنگ دوباره در مبنای شانزده: 1e90ff

پیشوند 0x برای تجزیه شانزده اختیاری است (شکل بزرگ 0X خطا می‌دهد) و # هم خطا می‌دهد؛ پس اول با رشته.حذف پیشوند بریده می‌شود. بعد جابه‌جایی بیتی و نقاب، سه کانال رنگ را از همان یک عدد بیرون می‌کشند.

انتخاب قالب برای عدد اعشاری

عدد اعشاری را می‌شود به سه شکل به متن تبدیل کرد و هر کدام به کاری می‌آید. قالب اعشار هر رقمی را که برای خواندن دوباره‌ی دقیقاً همان عدد لازم است می‌نویسد؛ برای پرونده‌ای که برنامه‌ی دیگری می‌خواندش همین را می‌خواهید. قالب اعشار کوتاه مثل %g در C تا شش رقم معنادار گرد می‌کند و همان چیزی را می‌نویسد که آدم انتظار دارد ببیند. قالب اعشار با دقت تا تعداد ثابتی رقم اعشار گرد می‌کند، برای پول و گزارش.

conv-guide-floats.salam
واردسازی تبدیل

تابع ریشه خطادار:
    قیمت := ۰.۱ * ۳.۰
    سرچاپ "قالب اعشار:          "، تبدیل.قالب اعشار(قیمت)
    سرچاپ "قالب اعشار کوتاه:    "، تبدیل.قالب اعشار کوتاه(قیمت)
    سرچاپ "قالب اعشار با دقت:   "، تبدیل.قالب اعشار با دقت(قیمت، ۲)
    برگشتی := تلاش تبدیل.تجزیه اعشار(تبدیل.قالب اعشار(قیمت))
    سرچاپ "رفت و برگشت دقیق است:"، برگشتی == قیمت
    کوتاه := تلاش تبدیل.تجزیه اعشار(تبدیل.قالب اعشار کوتاه(قیمت))
    سرچاپ "شکل کوتاه دقیق است:  "، کوتاه == قیمت
    سرچاپ تبدیل.قالب اعشار با دقت(۱.۰ / ۳.۰، ۴)، تبدیل.قالب اعشار کوتاه(1e21)
پایان
خروجیقالب اعشار: 0.30000000000000004 قالب اعشار کوتاه: 0.3 قالب اعشار با دقت: 0.30 رفت و برگشت دقیق است: true شکل کوتاه دقیق است: false 0.3333 1e+21

خروجی این بده‌بستان را نشان می‌دهد: شکل کوتاه ۰.۱ * ۳.۰ به صورت 0.3 خوانده می‌شود، اما تجزیه‌ی همان متن عددی کمی متفاوت می‌دهد. داده را با قالب اعشار ذخیره کنید و با یکی از دو تای دیگر نمایش دهید.

هدفتابع
ذخیره‌ی مقدار برای خواندن دوبارهقالب اعشار
نمایش مقدار به کاربرقالب اعشار کوتاه
قیمت، درصد، ستون‌های هم‌ترازقالب اعشار با دقت
تشخیص NaN پس از تجزیهنامعتبر است

تابع‌ها

قالب عدد بی علامت FormatUint

تابع قالب عدد بی علامت(x: طبیعی۶۴): رشته
یک عدد بدون علامت ۶۴ بیتی را به متن تبدیل می‌کند.
conv-FormatInt.salam
واردسازی تبدیل

تابع ریشه:
    سرچاپ تبدیل.قالب عدد(-۱۲۰۰)
    سرچاپ تبدیل.قالب عدد بی علامت(۱۸۴۴۶۷۴۴۰۷۳۷۰۹۵۵۱۶۱۵ برگردان طبیعی۶۴)
    سرچاپ تبدیل.قالب منطقی(نادرست)
    سرچاپ تبدیل.قالب شانزده(۴۰۹۶ برگردان طبیعی۶۴)
پایان
خروجی-1200 18446744073709551615 false 1000

قالب عدد FormatInt

تابع قالب عدد(n: صحیح۶۴): رشته
یک عدد صحیح ۶۴ بیتی را به متن تبدیل می‌کند و برای عددهای منفی علامت منفی می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

قالب منطقی FormatBool

تابع قالب منطقی(b: منطقی): رشته
درست را به "true" و نادرست را به "false" تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

قالب اعشار FormatFloat

تابع قالب اعشار(x: اعشار۶۴): رشته
عدد اعشاری را با همه‌ی رقم‌های لازم به متن تبدیل می‌کند، طوری که با خواندن دوباره دقیقاً همان عدد به دست آید.
conv-ParseFloat.salam
واردسازی تبدیل

تابع ریشه خطادار:
    ع := تلاش تبدیل.تجزیه اعشار("۳٫۷۵")
    سرچاپ ع * ۲
    سرچاپ تبدیل.قالب اعشار(۰.۱ + ۰.۲)
    سرچاپ تبدیل.قالب اعشار کوتاه(۰.۱ + ۰.۲)
    سرچاپ تبدیل.قالب اعشار با دقت(۲.۰ / ۳.۰، ۳)
    ن := تلاش تبدیل.تجزیه اعشار("nan")
    سرچاپ تبدیل.نامعتبر است(ن)، تبدیل.نامعتبر است(ع)
پایان
خروجی7.5 0.30000000000000004 0.3 0.667 true false

خواندن اعشار ScanFloat

تابع خواندن اعشار(s: رشته): اعشار۶۴
عدد اعشاری آغاز متن را بی‌گزارش‌دادن مشکل می‌خواند: رقم‌های فارسی و جداکننده‌ی اعشار فارسی را می‌پذیرد، "12abc" را 12 می‌خواند و متنی که عددی در آن نیست 0 می‌دهد. این همان خواننده‌ی بدون بررسی پشت تجزیه اعشار است؛ وقتی ورودی بد باید خطا باشد از تجزیه اعشار استفاده کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

قالب عدد بی علامت FormatUint

تابع قالب عدد بی علامت(x: طبیعی۶۴): رشته
یک عدد بدون علامت ۶۴ بیتی را به متن تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

قالب عدد FormatInt

تابع قالب عدد(n: صحیح۶۴): رشته
یک عدد صحیح ۶۴ بیتی را به متن تبدیل می‌کند و برای عددهای منفی علامت منفی می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

قالب منطقی FormatBool

تابع قالب منطقی(b: منطقی): رشته
درست را به "true" و نادرست را به "false" تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

تجزیه منطقی ParseBool

تابع تجزیه منطقی(s: رشته): Throws<منطقی>
رشته را به مقدار منطقی تبدیل می‌کند. "true"، "1"، "yes" و "on" درست‌اند و "false"، "0"، "no" و "off" نادرست، با فاصله‌ی اضافه در دو سو. هر چیز دیگری خطای نحو پرتاب می‌کند (کد conv.not_bool، یا conv.empty برای رشته‌ی خالی). بزرگی و کوچکی حرف مهم است، پس "True" خطا می‌دهد.
conv-ParseInt.salam
واردسازی تبدیل

تابع ریشه خطادار:
    سرچاپ تلاش تبدیل.تجزیه عدد("  -۲۷ ")، تلاش تبدیل.تجزیه عدد("-27")
    سرچاپ تلاش تبدیل.رشته به عدد("+15")
    سرچاپ تلاش تبدیل.تجزیه شانزده("0xff")، تلاش تبدیل.تجزیه شانزده("1A")
    سرچاپ تلاش تبدیل.تجزیه منطقی("yes")، تلاش تبدیل.تجزیه منطقی(" off ")
    تلاش:
        _ := تبدیل.تجزیه عدد("12abc")
    گرفتن خطا خ:
        سرچاپ خ.نام نوع()، خ.کد، خ.ستون، خ.به رشته()
    پایان
    تلاش:
        _ := تبدیل.رشته به عدد("3000000000")
    گرفتن خطا خ:
        سرچاپ خ.است(نوع خطا.خارج از بازه)، خ.پیام
    پایان
پایان
خروجی-27 -27 15 255 26 true false syntax error conv.invalid_char 3 conv: invalid character 'a' (line 1, column 3) true number does not fit in 32 bits

تجزیه منطقی با پیش فرض ParseBoolOr

تابع تجزیه منطقی با پیش فرض(s: رشته، fallback: منطقی): منطقی
مثل تجزیه منطقی است، ولی به جای پرتاب خطا آرگومان دوم را برمی‌گرداند.
conv-ParseIntOr.salam
واردسازی تبدیل

تابع ریشه:
    سرچاپ تبدیل.تجزیه عدد با پیش فرض("12abc"، ۰)، تبدیل.تجزیه عدد با پیش فرض(" ۴۲ "، ۰)
    سرچاپ تبدیل.رشته به عدد با پیش فرض(""، ۸۰۸۰)، تبدیل.رشته به عدد با پیش فرض("443"، ۸۰۸۰)
    سرچاپ تبدیل.تجزیه اعشار با پیش فرض("n/a"، ۰.۵)، تبدیل.تجزیه اعشار با پیش فرض("۱٫۲۵"، ۰.۵)
    سرچاپ تبدیل.تجزیه منطقی با پیش فرض("True"، نادرست)، تبدیل.تجزیه منطقی با پیش فرض("on"، نادرست)
    سرچاپ تبدیل.تجزیه شانزده با پیش فرض("#fff"، -۱)، تبدیل.تجزیه شانزده با پیش فرض("ff"، -۱)
پایان
خروجی0 42 8080 443 0.5 1.25 false true -1 255

تجزیه عدد ParseInt

تابع تجزیه عدد(s: رشته): Throws<صحیح۶۴>
یک عدد صحیح ۶۴ بیتی (صحیح۶۴) می‌خواند. فاصله‌های دو سو نادیده گرفته می‌شوند و یک علامت + یا - می‌تواند اول بیاید؛ رقم فارسی، عربی و انگلیسی همه قبول‌اند، حتی درهم. برای رشته‌ی خالی، علامتی که رقمی پس از آن نیست یا هر نویسه‌ی دیگری (ممیز، جداکننده، حرف) خطای نحو با جایگاه، خط و ستون همان نویسه پرتاب می‌کند، و اگر عدد در ۶۴ بیت جا نشود خارج از بازه (کد conv.overflow).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseInt.salam

تجزیه عدد با پیش فرض ParseIntOr

تابع تجزیه عدد با پیش فرض(s: رشته، fallback: صحیح۶۴): صحیح۶۴
مثل تجزیه عدد است، ولی به جای پرتاب خطا آرگومان دوم را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseIntOr.salam

رشته به عدد Atoi

تابع رشته به عدد(s: رشته): Throws<صحیح>
همان تجزیه عدد است، ولی یک صحیح برمی‌گرداند که ۳۲ بیتی است؛ عددی بیرون از این بازه خطای خارج از بازه می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseInt.salam

رشته به عدد با پیش فرض AtoiOr

تابع رشته به عدد با پیش فرض(s: رشته، fallback: صحیح): صحیح
مثل رشته به عدد است، ولی به جای پرتاب خطا آرگومان دوم را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseIntOr.salam

تجزیه اعشار ParseFloat

تابع تجزیه اعشار(s: رشته): Throws<اعشار۶۴>
یک عدد اعشاری می‌خواند. نماد علمی مثل 2.5e3، ممیز در اول یا آخر (.5، 5.)، inf، infinity و nan با هر شکل حروف، و رقم‌های فارسی با ممیز فارسی (۳٫۷۵) همه پذیرفته‌اند، با فاصله در دو سو. ویرگول، ممیز دوم، توان بی‌رقم یا هر نویسه‌ی دیگری خطای نحو می‌دهد و عددی که برای اعشاری ۶۴ بیتی بزرگ است خارج از بازه. عددی که آن‌قدر کوچک است که نمایش داده نمی‌شود صفر می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

تجزیه اعشار با پیش فرض ParseFloatOr

تابع تجزیه اعشار با پیش فرض(s: رشته، fallback: اعشار۶۴): اعشار۶۴
مثل تجزیه اعشار است، ولی به جای پرتاب خطا آرگومان دوم را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseIntOr.salam

نامعتبر است IsNaNF

تابع نامعتبر است(x: اعشار۶۴): منطقی
اگر عدد «ناعدد» (NaN) باشد، درست برمی‌گرداند؛ مثلاً حاصل تجزیه‌ی "nan". هیچ مقایسه‌ای با == این حالت را تشخیص نمی‌دهد، چون NaN با خودش هم برابر نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

قالب اعشار FormatFloat

تابع قالب اعشار(x: اعشار۶۴): رشته
عدد اعشاری را با همه‌ی رقم‌های لازم به متن تبدیل می‌کند، طوری که با خواندن دوباره دقیقاً همان عدد به دست آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

قالب اعشار کوتاه FormatFloatShort

تابع قالب اعشار کوتاه(x: اعشار۶۴): رشته
عدد را تا شش رقم معنادار گرد می‌کند و صفرهای آخر را نمی‌نویسد، مثل %g در C: 0.1 + 0.2 می‌شود 0.3 و 3.14159265 می‌شود 3.14159. از یک میلیون به بالا و زیر 0.0001 به نمایش توانی می‌رود؛ پس 1234567.0 می‌شود 1.23457e+06.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

قالب اعشار با دقت FormatFloatPrec

تابع قالب اعشار با دقت(x: اعشار۶۴، prec: صحیح): رشته
عدد اعشاری را با تعداد رقم اعشار دلخواه به متن تبدیل می‌کند و نیمه‌ها را از صفر دور گرد می‌کند. بیشتر از ۱۵ رقم اعشار نوشته نمی‌شود و برای مقدارهای بزرگ‌تر از حدود 9e14 کار به قالب اعشار سپرده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseFloat.salam

قالب شانزده FormatHex

تابع قالب شانزده(x: طبیعی۶۴): رشته
عدد را در مبنای شانزده و با حروف کوچک می‌نویسد، بدون پیشوند 0x.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-FormatInt.salam

تجزیه شانزده ParseHex

تابع تجزیه شانزده(s: رشته): Throws<صحیح۶۴>
عدد مبنای شانزده را می‌خواند. پیشوند 0x اختیاری است و رقم‌های شانزده‌شانزدهی با حرف کوچک و بزرگ هر دو قبول‌اند، اما خود پیشوند باید 0x با حرف کوچک باشد؛ فاصله‌های دو سو نادیده گرفته می‌شوند و علامت پذیرفته نیست. تا ۱۶ رقم جا می‌شود؛ مقدار بزرگ‌تر از 7fffffffffffffff با همان ۶۴ بیت منفی برمی‌گردد و عدد بلندتر خارج از بازه می‌دهد. هر نویسه‌ی دیگری خطای نحو پرتاب می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseInt.salam

تجزیه شانزده با پیش فرض ParseHexOr

تابع تجزیه شانزده با پیش فرض(s: رشته، fallback: صحیح۶۴): صحیح۶۴
مثل تجزیه شانزده است، ولی به جای پرتاب خطا آرگومان دوم را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: conv-ParseIntOr.salam