Perl中的JSON有效数值参数

Perl中的JSON有效数值参数,json,perl,rpc,bitcoin,Json,Perl,Rpc,Bitcoin,考虑到代码高于$btc,如果声明为: my $client = new JSON::RPC::Client; $client->ua->credentials( 'localhost:8332', 'jsonrpc', 'user' => 'password' ); my $uri = 'http://localhost:8332/'; my $obj = { method => 'sendfrom', params => [$accoun

考虑到代码高于$btc,如果声明为:

my $client = new JSON::RPC::Client;

$client->ua->credentials(
 'localhost:8332', 'jsonrpc', 'user' => 'password'  
  );

my $uri = 'http://localhost:8332/';
my $obj = {
  method  => 'sendfrom',
  params  => [$account,$sendto,$btc,6], };

my $res = $client->call( $uri, $obj );

if ($res){
  if ($res->is_error) { print "Error : ", $res->error_message; }
  else { print Dumper($res->result); }
} else {
  print $client->status_line;
 }
如果是以下情况,则不接受:

$btc = 0.01;
$btc = 0.01;
$btc = sprintf('%.8f', $btc);
如果是以下情况,也不接受:

$btc = 0.01;
$btc = 0.01;
$btc = sprintf('%.8f', $btc);
为什么会这样?我需要从html表单中获取$btc值,并理想地格式化该值


返回的错误是“500内部服务器错误”

该服务似乎对提供的是字符串还是数字很挑剔。使用以下命令强制numification:

&ReadParse(*data);
$btc =  $data{'amount'};

这是非常不寻常的行为(Perl透明地在字符串、整数和浮点之间进行转换),但您可以通过添加零将值强制为数字浮点

因此,请使用
0.0+sprintf('%.8f',$btc)
0.0+$data{'amount'}


顺便说一下,请不要用符号AND调用子程序。只是
ReadParse(*data)
是正确的。

$btc
被接受为参数”是什么?你在用
$obj
做什么(它不是对象,只是散列)。看起来问题出在服务器上。
localhost:8332
的另一端是什么?@Borodin localhost:8332是比特币Qt守护进程的RPC端口。
sprintf
产生字符串
“0.01000000”
。如果设置
$btc=“0.01000000”
$btc=0.01000000
,会发生什么情况?。很可能守护进程不喜欢此值的字符串。为什么要格式化?不接受@Borodin“0.01000000”,接受0.01000000。我只想在计算结果时对值进行四舍五入格式化,但我真的不需要这样做。但是,我需要从用户输入中获取$btc值,即使通过'&ReadParse'传递了有效值,它也不会被接受为有效值。@user3325861:感谢您的选择