【问题标题】:How to get int from float in picat?如何从 picat 中的 float 中获取 int?
【发布时间】:2023-03-04 04:10:01
【问题描述】:

我尝试从 picat 中的控制台 (stdin) 读取一行作为字符串并获取它的一半:

main =>
  L = read_line(),
  B = L.length/2,
  S = L.slice(1,B),
  println(S).

error(integer_expected(2.0),slice) 崩溃

当使用 int 代替 B - 没有崩溃。那么如何将B变成整数呢?

【问题讨论】:

    标签: picat


    【解决方案1】:

    您可以使用math module 中的floorroundceiling 等内置函数(更多函数here)。所以你可以像这样修改你的代码:

    main =>
        L = read_line(),
        B = round(L.length/2),
        S = L.slice(1,B),
        println(S).
    

    【讨论】:

      【解决方案2】:

      尝试使用integer(..) 函数将L.length/2 转换为整数或使用to_integer() 函数....应该为你做。

      【讨论】:

        【解决方案3】:

        类型推断在功能评估中起着至关重要的作用。 (/ /2) 它是一个浮点算术运算符,但 slice/2 需要一个整数。所以你应该改用 (// /2)。

        Picat> L=read_line(),println(L.slice(1,L.length//2)).
        123456789
        1234
        L = ['1','2','3','4','5','6','7','8','9']
        yes
        

        【讨论】:

          猜你喜欢
          • 2015-02-13
          • 2020-02-12
          • 2016-08-11
          • 1970-01-01
          • 2017-12-22
          • 2020-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多