无法从double转换为float

sca*_*and 11 android integer division

在我的数据库中,我有几个"真实"字段.

继承人的结构:

    database.execSQL("create table " + TABLE_LOGS + " (" 
            + COLUMN_ID + " integer primary key autoincrement," 
            + COLUMN_ID_DAY_EXERCISE + " integer not null,"
            + COLUMN_REPS + " integer not null"
            + COLUMN_WEIGHT + " real not null"
            + COLUMN_1RM + " real not null"
            + COLUMN_DATE + " integer not null"
            + ")");
Run Code Online (Sandbox Code Playgroud)

现在我要做的是计算1RM,以便我可以将它插入数据库.

到目前为止,这是我的功能:

public void createLog(long id_day_exercise, float reps, long weight) {

    // create 1rm
    // create date timestamp

    float onerm = weight/(1.0278-(.0278*reps));
    long unixTime = System.currentTimeMillis() / 1000L;
}
Run Code Online (Sandbox Code Playgroud)

我被困在这里.它给了我错误"无法从double转换为float" onerm.我已经尝试通过在它前面使用(Float)将重量作为浮点数投射,我尝试使用weight.floatValue()并且似乎没有任何效果.

WLi*_*Lin 28

你试过这个吗?

float onerm = (float) (weigth/(1.0278-(.0278*reps)));
Run Code Online (Sandbox Code Playgroud)


Ahm*_*aza 14

这种方法怎么样?

Float.valueOf(String.valueOf(your_double_variable));
Run Code Online (Sandbox Code Playgroud)


Sur*_*gch 6

从double转换为float可以像这样完成:

double d = 1.2;
float f = (float) d;
Run Code Online (Sandbox Code Playgroud)

或者,如果您只需要表示1.2为浮点数,则使用1.2f

注意

  • float是单精度32位,double是双精度64位,因此有可能在转换中失去精度。请参阅原始数据类型文档