Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 打印数字时的货币格式_Ruby_Decimal_String Formatting - Fatal编程技术网

Ruby 打印数字时的货币格式

Ruby 打印数字时的货币格式,ruby,decimal,string-formatting,Ruby,Decimal,String Formatting,好的,这是一个非常简单的程序,运行良好。但我不喜欢的一点是,每当控制台打印出总数时,它看起来就像下面的示例:417的75.0%是31275。 现在有没有办法让我把总数以十进制/货币形式打印出来?好像应该是312.75之类的。请尽量简单回答,我是Ruby新手。谢谢大家! 首先你需要修正你的数学。75%等于75/100,所以您需要 def percent_of puts "What is the number?" number = gets.chomp.to_f puts "What i

好的,这是一个非常简单的程序,运行良好。但我不喜欢的一点是,每当控制台打印出总数时,它看起来就像下面的示例:417的75.0%是31275。
现在有没有办法让我把总数以十进制/货币形式打印出来?好像应该是312.75之类的。请尽量简单回答,我是Ruby新手。谢谢大家!

首先你需要修正你的数学。75%等于75/100,所以您需要

def percent_of
  puts "What is the number?"
  number = gets.chomp.to_f
  puts "What is the percent?"
  percent = gets.chomp.to_f
  total_percent_of = number * percent.to_f
  puts " #{percent}% of #{number} is #{total_percent_of.to_i}."
end
接下来,您需要一个格式字符串,以确保的
总百分比始终以正确的小数数打印:

total_percent_of = number * percent / 100.0

(您需要在
percent
之后加上
%%
,因为百分号对sprintf有特殊意义)。有关字符串格式的详细信息,请参阅。

谢谢!现在效果很好。如果要使用格式字符串,请将其用于所有变量。不要混淆它们,因为这会变得更难阅读/维护:
sprintf“%d%%of%d是%.2f”,[percent,number,total_percent of]
我实际上更喜欢
put“{number}的{percent}%是{%.2f”%total_percent of}”
,因为这样可以将字符串格式本地化到唯一需要它的地方。
sprintf " #{percent}%% of #{number} is %.2f", total_percent_of