Perl中的JSON有效数值参数
考虑到代码高于$btc,如果声明为: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
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:感谢您的选择