分までの精度でUnix TimeをDate型に変換する場合、Double型からFloat型への変換による精度の低下はそれほど大きな問題にはなりません。これは、Unix Timeの小数点以下の部分が秒単位であり、分単位での変換ではその部分が切り捨てられるためです。
以下は、KotlinでDouble型とFloat型のUnix TimeをDate型に変換する例です:
import java.util.Date
fun main() {
// Double型のUnix Time
val unixTimeDouble: Double = 1625077765.123456
// Float型のUnix Timeに変換
val unixTimeFloat: Float = unixTimeDouble.toFloat()
// 秒単位に変換
val unixTimeDoubleSec: Long = unixTimeDouble.toLong()
val unixTimeFloatSec: Long = unixTimeFloat.toLong()
// Date型に変換
val dateFromDouble = Date(unixTimeDoubleSec * 1000) // ミリ秒に変換
val dateFromFloat = Date(unixTimeFloatSec * 1000) // ミリ秒に変換
// 表示
println("Double型のUnix TimeをDate型に変換: $dateFromDouble")
println("Float型のUnix TimeをDate型に変換: $dateFromFloat")
}
このコードでは、Double型とFloat型のUnix TimeをそれぞれDate型に変換しています。KotlinのDate
クラスは、ミリ秒単位の時間を取りますので、Unix Timeをミリ秒に変換するために1000を掛けています。
結果の例:
Double型のUnix TimeをDate型に変換: Tue Jun 30 17:22:45 UTC 2021
Float型のUnix TimeをDate型に変換: Tue Jun 30 17:22:45 UTC 2021
このように、分までの精度を求める場合、Float型でも十分な精度を確保できることがわかります。ただし、実際のアプリケーションでさらに精度が求められる場合は、Double型を使用することをお勧めします。