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 7package main 8 9import "fmt" 10 11func f0() string { 12 const f = 3.141592; 13 return fmt.Sprintf("%v", float64(f)); 14} 15 16 17func 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 25func 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