func TestFloat(t *testing.T) { //os.Setenv("NLS_LANG", "RUSSIAN_RUSSIA.CL8MSWIN1251") username, password, sid := oracle.SplitDSN(*dsn) conn, err := oracle.NewConnection(username, password, sid, false) if err != nil { t.Fatalf("Connect error: \"%s\"", err.Error()) } defer func() { err := conn.Close() if err != nil { t.Errorf("Close error: \"%s\"", err.Error()) } }() cur := conn.NewCursor() defer cur.Close() // { // if oci, client, db, err := conn.NlsSettings(cur); err != nil { // t.Logf("NlsSettings: %s", err) // } else { // t.Logf("NLS oci=%s client=%s database=%s", oci, client, db) // } // } var v *oracle.Variable v, err = cur.NewVariable(0, oracle.FloatVarType, 0) if err != nil { t.Fatalf("Error with NewVariable: %v", err) } var fI float64 fI = float64(-1) / 25 err = v.SetValue(0, fI) if err != nil { t.Fatalf("Error with SetValue: %v", err) } var fR float64 err = v.GetValueInto(&fR, 0) if err != nil { t.Fatalf("Error with GetValueInto: %v", err) } if fR != fI { t.Errorf("Value should be \n\"%v\",\n was \n\"%v\"", fI, fR) } fIntf, err1 := v.GetValue(0) if err1 != nil { t.Fatalf("Error with GetValueInto: %v", err1) } switch x := fIntf.(type) { case float32: fR = fIntf.(float64) case float64: fR = fIntf.(float64) case string: fR, err = strconv.ParseFloat(fIntf.(string), 64) if err != nil { panic(err) } default: panic(x) } if fR != fI { t.Errorf("Value should be \n\"%v\",\n was \n\"%v\"", fI, fR) } }