使用什么数据类型,以便1和1.0在Datomic中都有效?

fat*_*man 6 clojure datomic

{
  :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 
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加1到实体时收到错误.

:message"java.lang.IllegalArgumentException :: db.error/wrong-type-for-attribute Value 1 not a valid:float for attribute:outcome/weighting"

如果我进去,它工作正常1.0.

我很欣赏,(= (float? 1) false)但有没有其他方法我可以通过Datomic设置避免这种情况,而无需解析传入的EDN并调整11.0

Ale*_*ler 1

您无法将整数和浮点数存储在 Datomic 中的同一架构属性中。因此,在进行交易之前,您需要将值强制转换为您选择的任何类型(这里可能是浮点型或双精度型)。您可以在执行事务的代码中执行此操作,甚至可以在事务函数中执行此操作。