본문으로 건너뛰기
토파즈6.0 · 출시 전
다운로드 →

문서 검색

명세 6.0

방향키로 결과를 고르고 Enter를 눌러 여세요.

API 이름, 진단 번호, 규칙 또는 프로젝트 주제를 입력하세요.

    라이브러리 · std.bigint

    BigInt.toInt

    Convert an exact integer when it fits the signed int range.

    toInt() -> Option<int>
    수신자
    BigInt
    최소 인자 수
    0
    최대 인자 수
    0

    Declaration and parameters

    링크

    사용 조건

    기본 포함 · 미정

    Import std.bigint in language mode 5.21.

    The current compiler selects std/bigint.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    수신자

    BigInt

    매개변수 제약

    BigInt.toInt returns Some containing the same integer when the value is at least -9223372036854775808 and at most 9223372036854775807. Both endpoints are included.

    Every value outside that signed 64 bit range returns None(). Conversion does not wrap, truncate, round, or saturate.

    The operation evaluates its receiver once and leaves it unchanged. A failed conversion is an Option value and does not raise an arithmetic overflow fault.

    BigInt.parse can represent integers beyond the int range. BigInt.toString still formats those values exactly when BigInt.toInt returns None().

    결과

    The declared result type is Option<int>.

    효과

    실패

    Result and effects

    링크

    Both signed 64 bit endpoints return Some. Values outside the range return None without wrapping or saturation.

    Resolved contracts

    링크

    Related entries

    링크

    std.bigint →

    Convert exact integers within the int range

    링크
    규칙topaz.stdlib.contract.bigint-to-int.rule

    Convert exact integers within the int range

    BigInt.toInt returns Some containing the same integer when the value is at least -9223372036854775808 and at most 9223372036854775807. Both endpoints are included.

    Every value outside that signed 64 bit range returns None(). Conversion does not wrap, truncate, round, or saturate.

    The operation evaluates its receiver once and leaves it unchanged. A failed conversion is an Option value and does not raise an arithmetic overflow fault.

    BigInt.parse can represent integers beyond the int range. BigInt.toString still formats those values exactly when BigInt.toInt returns None().

    이유

    A checked conversion preserves the distinction between an exact arbitrary precision value and a bounded machine integer. Option makes failure explicit without inventing a replacement integer.

    Include both int endpoints and reject their neighbors

    링크
    main.tpzInclude both int endpoints and reject their neighbors플레이그라운드 열기 →
    1. import std.bigint { BigInt }
    2. import std.test
    3. import std.io
    4. function show(text: string) -> () {
    5. let value = test.assertSome(BigInt.parse(text, 10))
    6. match (value.toInt()) {
    7. case Some(integer) => io.writeLine("{integer}")
    8. case None() => io.writeLine("outside int")
    9. }
    10. }
    11. show("-9223372036854775808")
    12. show("9223372036854775807")
    13. show("-9223372036854775809")
    14. show("9223372036854775808")
    15. show("0")
    기대 출력종료 코드 0
    -9223372036854775808
    9223372036854775807
    outside int
    outside int
    0
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. -9223372036854775808
    2. 9223372036854775807
    3. outside int
    4. outside int
    5. 0

    Keep a large value after conversion fails

    링크
    main.tpzKeep a large value after conversion fails플레이그라운드 열기 →
    1. import std.bigint { BigInt }
    2. import std.test
    3. import std.io
    4. let value = test.assertSome(BigInt.parse("1000000000000000000000000000000", 10))
    5. match (value.toInt()) {
    6. case None() => io.writeLine("outside int")
    7. case Some(_) => io.writeLine("converted")
    8. }
    9. io.writeLine(value.toString(10))
    기대 출력종료 코드 0
    outside int
    1000000000000000000000000000000
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. outside int
    2. 1000000000000000000000000000000

    메뉴

    다운로드 →