为什么android SQLite可以将double值(java 8字节)存储到float列中

man*_*uai 4 java sqlite android

Create Table:
db.execSQL("CREATE TABLE " + PERSONS_TABLE + " ("
        + PersonsColumns.ID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, "
        ...
            + PersonsColumns.HEIGHT + " FLOAT, "
                    + PersonsColumns.CITY + " STRING);");
Write Data:
ContentValues values = new ContentValues();
alues.put(PersonsColumns.HEIGHT, 1.7976931348623157E308);
db.insertOrIgnore(values);
Run Code Online (Sandbox Code Playgroud)

您可以在sqlite中看到值1.7976931348623157E308超出FLOAT值范围(4个字节).为什么它可以正确存储这个值?

Sha*_*dne 5

SQLite是"无类型的".您可以将任何类型的数据存储在任何表的任何列中,而不管该列的声明数据类型如何

SQLite还允许省略数据类型.