我想這種類型只包含值x爲這是(x > 0) && (x <= 10.0)
是真的當聲明一個浮動範圍(0,10.0]我有什麼需要注意的
我宣佈我喜歡的類型larger_than_zero
這樣:
type a_float is digits 6 range - 1.0E38 .. 1.0E38;
type larger_than_zero is new a_float range a_float'Adjacent(0.0, 1.0) .. 10.0;
現在不可能分配0.0
到larger_than_zero
類型的變量。
'Adjacent(A, B)
將在下次可能的機器值從A
開始不是A
,並在於B
的方向
我的問題是這是否會導致一些通常不會被期望的奇怪行爲。 也許larger_than_zero'First
甚至不是larger_than_zero
模型的一部分? 任何指向這個主題的詳細信息的指針都會被引用。
好的,所以對於子類型,這是很好的定義。如果greater_than_zero會被聲明如下:'type larger_than_zero is digits 6 range a_float'Adjacent(0.0,1.0).. 10.0'? –
@ker如果'a_float'和'greater_than_zero'具有相同的表示形式(即,都是32位IEEE浮點數或都是64位),這將起作用。 'type'聲明等價於'type anonymous是數字6;子類型larger_than_zero是匿名範圍...',但當然,你不能說'anonymous'Adjacent'。 – ajb