浮点数范围

时间:2015-12-20 16:44:38

标签: elixir

我尝试了灵丹妙药,而且出现了这个问题 - 我似乎无法创建一系列浮点数作为边界。

根据Dave Thomas的书,第24页:

  

范围表示为start..end,其中start和end可以是任何类型......

但是,当我尝试使用浮点数创建范围时,出现错误:

iex(1)> 1.1..3.1 
** (ArgumentError) ranges (left .. right) expect both sides to be integers, got: 1.1 .. 3.1
    (elixir) expanding macro: Kernel.../2
             iex:1: (file)

我认为这是一个解决这个问题的工作:

iex(2)> a = 1.1
1.1
iex(3)> b = 3.1
3.1
iex(4)> a..b
1.1..3.1

但是,在后一种情况下,in运算符无法返回我直观期望的值:

iex(5)> 2.0 in a..b
false

我在这里明显遗漏了一些东西。有人能指出我正确的方向吗?

更新即可。分配c = a..b并不能解决问题:

$ iex
Erlang/OTP 18 [erts-7.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.1.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> a = 1.1
1.1
iex(2)> b = 3.1
3.1
iex(3)> c = a..b
1.1..3.1
iex(4)> 2.0 in c
false

更新2 。我似乎可以使用abc构建一个范围,如上所示(不再被认为是合法的?),但是not using macro,因为1.1。

这让我想到了这个问题:

制作一系列浮点数的默认选择是什么,以便我可以检查它是否涵盖给定的数字?

0 个答案:

没有答案