package main import ( "fmt" ) func main() { fmt.Printf("%d=%d\n", 1+1, 2) fmt.Printf("%f=%f\n", 0.1+0.1, 0.2) fmt.Printf("%f=%f\n", 0.1+0.2, 0.3) fmt.Printf("%f=%f\n", 0.2+0.2, 0.4) fmt.Printf("科学计数法:%f\n", 1e3) var name float64 = 1.68 var name2 = 1.2 fmt.Printf("1 > %T, %#v, %f, %g, %v\n", name, name, name, name, name) fmt.Printf("2 > %T, %#v, %f, %g, %v\n", name2, name2, name2, name2, name2) name3 := name2 + name fmt.Printf("+ > %T, %#v, %f, %g, %v\n", name3, name3, name3, name3, name3) name4 := name2 - name fmt.Printf("- > %T, %#v, %f, %g, %v\n", name4, name4, name4, name4, name4) name5 := name2 * name fmt.Printf("* > %T, %#v, %f, %g, %v\n", name5, name5, name5, name5, name5) name6 := name2 / name fmt.Printf("/ > %T, %#v, %f, %g, %v\n", name6, name6, name6, name6, name6) name = name - 1 fmt.Printf("-1 > %T, %#v, %f, %g, %v\n", name, name, name, name, name) name = name + 1 fmt.Printf("+1 > %T, %#v, %f, %g, %v\n", name, name, name, name, name) name++ fmt.Printf("++ > %T, %#v, %f, %g, %v\n", name, name, name, name, name) name-- fmt.Printf("-- > %T, %#v, %f, %g, %v\n", name, name, name, name, name) sprintf := fmt.Sprintf("%f", name) fmt.Printf("%s\n", sprintf) name9 := 1.99999999999999 sprintf9 := fmt.Sprintf("%f", name9) fmt.Printf("%s\n", sprintf9) name9 = 1.9999999 sprintf9 = fmt.Sprintf("%f", name9) fmt.Printf("%s\n", sprintf9) name9 = 1.999999 sprintf9 = fmt.Sprintf("%f", name9) fmt.Printf("%s\n", sprintf9) fmt.Printf("%d\n", name == 1.680000) fmt.Printf("%d\n", name == 1.6799999999999997) /* %v 按默认格式输出 %+v 在%v的基础上额外输出字段名 %#v 在%+v的基础上额外输出类型名 %% %字面量 %b 一个二进制整数,将一个整数格式转化为二进制的表达方式 %c 一个Unicode的字符 %d 十进制整数 %o 八进制整数 %x 小写的十六进制数值 %X 大写的十六进制数值 %U 一个Unicode表示法表示的整型码值 %s 输出以原生的UTF8字节表示的字符,如果console不支持utf8编码,则会乱码 %t 以true或者false的方式输出布尔值 %v 使用默认格式输出值,或者如果方法存在,则使用类性值的String()方法输出自定义值 %T 输出值的类型 %f 有小数而无指数 fmt.Printf("%f", 10.2) > 10.200000 %g 根据情况选择 %e 或者 %f 以产生更紧凑的(无末尾的0)输出 fmt.Printf("%f", 10.20) > 10.2 %G 根据情况选择 %E 或者 %f 以产生更紧凑的(无末尾的0)输出 fmt.Printf("%f", 10.20+2i) > 10.2+2i */ }