--- loncom/homework/default_homework.lcpm 2004/05/17 21:15:56 1.79 +++ loncom/homework/default_homework.lcpm 2004/05/17 22:20:21 1.80 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.79 2004/05/17 21:15:56 albertel Exp $ +# $Id: default_homework.lcpm,v 1.80 2004/05/17 22:20:21 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -480,13 +480,15 @@ sub floor {return (($_[0]-CORE::int($_[ sub format { my ($value,$fmt)=@_; - my $dollarmode; + my $dollarmode,$commamode; if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } + if ($fmt =~ /^,(.*)/) { $fmt=$1; $commamode=1; } $fmt=~s/e/E/g; my $result=sprintf('%.'.$fmt,$value); if ($fmt eq '0f') { $result .='.'; } $result=~s/(E[+-]*)0/$1/; - if ($dollarmode) {$result=&dollarmode($result);} + if ($dollarmode) {$result=&dollarformat($result);} + if ($commamode) {$result=&commaformat($result);} return $result; } @@ -532,15 +534,17 @@ sub chemparse { sub prettyprint { my ($value,$fmt,$target)=@_; my $result; - my $dollarmode; + my $dollarmode,$commamode; if (!$target) { $target = $external::target; } if ($fmt =~ /chem/i) { return(&chemparse($value)); } if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } + if ($fmt =~ /^,(.*)/) { $fmt=$1; $commamode=1; } if ($fmt) { $value=sprintf('%.'.$fmt,$value); } if ($fmt eq '0f') { $value .='.'; } if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/i ) { my $frac=$1; if ($dollarmode) { $frac=&dollarformat($frac); } + if ($commamode) { $frac=&commaformat($frac); } my $exponent=$2; $exponent=~s/^\+0*//; $exponent=~s/^-0*/-/; @@ -560,13 +564,13 @@ sub prettyprint { } else { $result=$value; if ($dollarmode) { $result=&dollarformat($result,$target); } + if ($commamode) { $result=&commaformat($result,$target); } } return $result; } -sub dollarformat { +sub commaformat { my ($number,$target) = @_; - if (!$target) { $target = $external::target; } if ($number =~ /\./) { while ($number =~ /([^\.,]+)([^\.,][^\.,][^\.,])([,0-9]*\.[0-9]*)$/) { $number = $1.','.$2.$3; @@ -576,6 +580,13 @@ sub dollarformat { $number = $1.','.$2.$3; } } + return $number; +} + +sub dollarformat { + my ($number,$target) = @_; + if (!$target) { $target = $external::target; } + $number=&commaformat($number,$target); if ($target eq 'tex') { $number='\$'.$number; #' stupid emacs } else {