1 // run 2 3 // Copyright 2009 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 package main 8 9 import "fmt" 10 11 func f0() string { 12 const f = 3.141592; 13 return fmt.Sprintf("%v", float64(f)); 14 } 15 16 17 func f1() string { 18 const f = 3.141592; 19 x := float64(float32(f)); // appears to change the precision of f 20 _ = x; 21 return fmt.Sprintf("%v", float64(f)); 22 } 23 24 25 func main() { 26 r0 := f0(); 27 r1 := f1(); 28 if r0 != r1 { 29 println("r0 =", r0); 30 println("r1 =", r1); 31 panic("r0 and r1 should be the same"); 32 } 33 } 34