@@ -1536,6 +1536,18 @@ func (g *Generator) goTag(message *Descriptor, field *descriptor.FieldDescriptor
15361536 g .Fail ("unknown enum type" , CamelCaseSlice (obj .TypeName ()))
15371537 }
15381538 defaultValue = enum .integerValueAsString (defaultValue )
1539+ case descriptor .FieldDescriptorProto_TYPE_FLOAT :
1540+ if def := defaultValue ; def != "inf" && def != "-inf" && def != "nan" {
1541+ if f , err := strconv .ParseFloat (defaultValue , 32 ); err == nil {
1542+ defaultValue = fmt .Sprint (float32 (f ))
1543+ }
1544+ }
1545+ case descriptor .FieldDescriptorProto_TYPE_DOUBLE :
1546+ if def := defaultValue ; def != "inf" && def != "-inf" && def != "nan" {
1547+ if f , err := strconv .ParseFloat (defaultValue , 64 ); err == nil {
1548+ defaultValue = fmt .Sprint (f )
1549+ }
1550+ }
15391551 }
15401552 defaultValue = ",def=" + defaultValue
15411553 }
@@ -2235,6 +2247,14 @@ func (g *Generator) generateDefaultConstants(mc *msgCtx, topLevelFields []topLev
22352247 def = "float32(" + def + ")"
22362248 }
22372249 kind = "var "
2250+ case df .getProtoType () == descriptor .FieldDescriptorProto_TYPE_FLOAT :
2251+ if f , err := strconv .ParseFloat (def , 32 ); err == nil {
2252+ def = fmt .Sprint (float32 (f ))
2253+ }
2254+ case df .getProtoType () == descriptor .FieldDescriptorProto_TYPE_DOUBLE :
2255+ if f , err := strconv .ParseFloat (def , 64 ); err == nil {
2256+ def = fmt .Sprint (f )
2257+ }
22382258 case df .getProtoType () == descriptor .FieldDescriptorProto_TYPE_ENUM :
22392259 // Must be an enum. Need to construct the prefixed name.
22402260 obj := g .ObjectNamed (df .getProtoTypeName ())
0 commit comments