Clojure 要使用什么数据类型,以便1和1.0在Datomic中都有效?
当我尝试将Clojure 要使用什么数据类型,以便1和1.0在Datomic中都有效?,clojure,datomic,Clojure,Datomic,当我尝试将1添加到实体时,会出现错误 :消息“java.lang.IllegalArgumentException::db.error/error-type-for-attribute值1不是有效的:属性的浮点值:结果/权重” 如果我通过1.0,它工作正常 我很欣赏(=(float?1)false),但是有没有其他方法可以通过Datomic设置避免这种情况,而无需解析传入的EDN并从1调整到1.0?在Datomic的同一模式属性中不能同时存储INT和float。因此,在处理之前,您需要将该值强制
1
添加到实体时,会出现错误
:消息“java.lang.IllegalArgumentException::db.error/error-type-for-attribute值1不是有效的:属性的浮点值:结果/权重”
如果我通过1.0
,它工作正常
我很欣赏
(=(float?1)false)
,但是有没有其他方法可以通过Datomic设置避免这种情况,而无需解析传入的EDN并从1
调整到1.0
?在Datomic的同一模式属性中不能同时存储INT和float。因此,在处理之前,您需要将该值强制为您选择的任何类型(这里可能是float或double)。您可以在执行事务的代码中执行此操作,甚至可以在事务函数中执行此操作。您是否尝试过db.type/double
?似乎首选double
您是希望将1.0存储为1,还是希望能够同时存储1.5?你需要精确地存储1.5,还是浮动精度可以接受?
{
:db/id #db/id[:db.part/db]
:db/ident :outcome/weighting
:db/valueType :db.type/float
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db
}