如何从picat浮点数获得int?

时间:2015-03-28 18:11:23

标签: picat

我尝试在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转换为整数?

3 个答案:

答案 0 :(得分:2)

您可以使用内置函数,例如来自floor的{​​{1}},roundceiling(更多函数here)。所以你可以修改你的代码:

math module

答案 1 :(得分:0)

尝试使用integer(..)函数将L.length/2转换为整数或使用to_integer()函数....应该为您执行此操作。

答案 2 :(得分:0)

类型推断在功能评估中起着至关重要的作用。 (/ / 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