Android 双人房型转换器
Android Room TypeConverter for Double
我正在尝试为 Android Room Persistance Library 使用自定义 TypeConverter,如 documentation 所示。主要思想是格式化 Android Room Dao 正在执行的所有 Sqlite SUM select。
我的代码:
@TypeConverter
public static double toDouble(String str) {
return FormatHelper.formatAmount(Double.parseDouble(str));
}
@TypeConverter
public static String fromDouble(double doub) {
return String.valueOf(FormatHelper.formatAmount(doub));
}
我已经尝试清除数据并重建应用程序。
同一 class 中的日期转换器正在运行。
Android TypeConverters 不支持 Primitive 变量吗?
编辑:
我在 RoomDatabase 中注册了 TypeConverter class 所以它在整个数据库中使用。
更具体地说我的问题:如果我在 Dao 中有这样的查询 class:
@Query("SELECT SUM(quantity) FROM production_plan_item")
Double getActivePlanItemsCount();
它有时可能 return 值像 2.30000000000001。
我认为类型转换器用于处理 returned 查询值。每次我将 double 保存到数据库或从中保存 select double 之前,我的 TypeConverter 都会为我舍入 double 并且我不必每次 select 时都舍入它。
否则我必须手动将每个 selected 双舍入。
I thought that Type converters are used to process returned value of queries
您的 @TypeConverter
方法在 double
和 String
之间转换。 SUM
不会return一个String
。您的 @Query
方法是 returning Double
。因此,这些 @TypeConverter
方法都不相关,因为没有发生 String
<->double
转换。
Otherwise I have to round every single selected double manually.
也许您应该在数据库架构中使用更少的 REAL
列。
我正在尝试为 Android Room Persistance Library 使用自定义 TypeConverter,如 documentation 所示。主要思想是格式化 Android Room Dao 正在执行的所有 Sqlite SUM select。
我的代码:
@TypeConverter
public static double toDouble(String str) {
return FormatHelper.formatAmount(Double.parseDouble(str));
}
@TypeConverter
public static String fromDouble(double doub) {
return String.valueOf(FormatHelper.formatAmount(doub));
}
我已经尝试清除数据并重建应用程序。 同一 class 中的日期转换器正在运行。 Android TypeConverters 不支持 Primitive 变量吗?
编辑:
我在 RoomDatabase 中注册了 TypeConverter class 所以它在整个数据库中使用。
更具体地说我的问题:如果我在 Dao 中有这样的查询 class:
@Query("SELECT SUM(quantity) FROM production_plan_item")
Double getActivePlanItemsCount();
它有时可能 return 值像 2.30000000000001。
我认为类型转换器用于处理 returned 查询值。每次我将 double 保存到数据库或从中保存 select double 之前,我的 TypeConverter 都会为我舍入 double 并且我不必每次 select 时都舍入它。
否则我必须手动将每个 selected 双舍入。
I thought that Type converters are used to process returned value of queries
您的 @TypeConverter
方法在 double
和 String
之间转换。 SUM
不会return一个String
。您的 @Query
方法是 returning Double
。因此,这些 @TypeConverter
方法都不相关,因为没有发生 String
<->double
转换。
Otherwise I have to round every single selected double manually.
也许您应该在数据库架构中使用更少的 REAL
列。