convert string to number

Hello, if I use the sprintf function it would give me a number STRING, but =
not number, so I have to trick the string to become number by adding and su=
btracting the number with 1. Is there a better way than this ? I want it to=
 be a number data type and not string.=0A=0Ae.g =0A=0Amy $strNumber =3D spr=
intf("%04d", 123);=0Amy $number =3D $strNumber + 1 - 1; # to trick Perl to =
convert to number datatype instead of string. =0A=0A=0AThanks,=0A=0AWilliam=
=0A=0ASend instant messages to your online friends http://uk.messenger.yaho=
o.com 
0
esia168
6/15/2008 12:09:51 PM
perl.beginners 29360 articles. 3 followers. Follow

11 Replies
469 Views

Similar Articles

[PageSpeed] 41

On Sun, Jun 15, 2008 at 8:09 PM, William <esia168@yahoo.com> wrote:

>
> my $strNumber = sprintf("%04d", 123);

instead of that, you would say:

my $strNumber = sprintf("%d", 123);

This is already a number.

-- 
Jeff Peng - Peng.Kyo@gmail.com
Professional Squid supports in China
http://www.ChinaSquid.com/
0
peng
6/15/2008 12:38:43 PM
William schreef:

> Hello, if I use the sprintf function it would give me a number
> STRING, but not number, so I have to trick the string to become
> number by adding and subtracting the number with 1. Is there a better
> way than this ? I want it to be a number data type and not string.
>
> e.g
>
> my $strNumber = sprintf("%04d", 123);
> my $number = $strNumber + 1 - 1; # to trick Perl to convert to number
> datatype instead of string.


    my $number = 0+ $strNumber;

or "in place":

    $strNumber += 0;

But there really is no need! The first time you use the variable as a
number, it will become a number (or rather a numeric reality will be
added to it), which is used in further numeric contexts.

-- 
Affijn, Ruud

"Gewoon is een tijger."

0
rvtol
6/15/2008 3:01:40 PM
>     my $number =3D 0+ $strNumber;=0A> =0A> or "in place":=0A> =0A>     $s=
trNumber +=3D 0;=0A> =0A> But there really is no need! The first time you u=
se the variable as a=0A> number, it will become a number (or rather a numer=
ic reality will be=0A> added to it), which is used in further numeric conte=
xts=0A=0Ahaha instead of adding and substracting 1 , it's even better addin=
g zero,=0AI understand what you are talking about, but  there is really a n=
eed for me to convert to number while I am using =0Athe module, Language::P=
rolog::Yaswi,  to convert the perl datatype into prolog dataatype, which  i=
s another language. If I did not do so, it would treat that as string inste=
ad of number. So I think there is not better way than adding 0.=0A=0A=0ATha=
nk you.=0A=0ASend instant messages to your online friends http://uk.messeng=
er.yahoo.com 
0
esia168
6/15/2008 3:40:36 PM
William schreef:
> [attribution dammit] Ruud:

>>     my $number = 0+ $strNumber;
>>
>> or "in place":
>>
>>     $strNumber += 0;
>>
>> But there really is no need! The first time you use the variable as a
>> number, it will become a number (or rather a numeric reality will be
>> added to it), which is used in further numeric contexts
>
> haha instead of adding and substracting 1 , it's even better adding
> zero,
> I understand what you are talking about, but  there is really a need
> for me to convert to number while I am using
> the module, Language::Prolog::Yaswi,  to convert the perl datatype
> into prolog dataatype, which  is another language. If I did not do
> so, it would treat that as string instead of number. So I think there
> is not better way than adding 0.

There is no real way to test if a value inside a variable has a numeric
"personality". Variables can have multiple "personalities", each with
there own binary value.

So maybe the problem just comes from the leading zeroes that your
sprintf format added?

-- 
Affijn, Ruud

"Gewoon is een tijger."

0
rvtol
6/15/2008 3:57:48 PM
> There is no real way to test if a value inside a variable has a numeric=
=0A> "personality". Variables can have multiple "personalities", each with=
=0A> there own binary value.=0A> =0A> So maybe the problem just comes from =
the leading zeroes that your=0A> sprintf format added?=0A=0A=0ANot exactly =
from the leading zeros,=0A=0Ause Data::Dumper;=0Amy $numStr =3D sprintf("%4=
d", 1234);=0Aprint (Dumper $numStr), "\n";=0A=0Amy $numStr =3D sprintf("%05=
d", 1234);=0Aprint (Dumper $numStr), "\n";=0A=0Amy $num =3D sprintf("%05d",=
 1234);=0A$num +=3D 0;=0Aprint (Dumper $num), "\n";=0A=0A=0A  use Language:=
:Prolog::Types::overload;=0A=0A  use Language::Prolog::Types qw(:ctors);=0A=
=0A  print prolog_functor('foo', $numStr), "\n";=0A  print prolog_functor('=
foo', $num), "\n";=0A=0A=0A$VAR1 =3D '1234';=0A$VAR1 =3D '01234';=0A$VAR1 =
=3D 1234;=0Afoo(01234)=0Afoo(1234)=0A=0A=0AAs you can see the last of $VAR1=
 does not have single quote, so it's really in number data type. The proble=
m is I need to use the number variable in prolog_functor function=0A=0AThis=
 is module that serve as a glue between Perl and Programming Logic (Prolog)=
 language, if it's not =0Ain number data type it will become a string in Pr=
olog language (in Prolog it is called atom). =0A=0AI think so far, adding z=
ero solve the problem.=0A=0AThanks.=0A=0ASend instant messages to your onli=
ne friends http://uk.messenger.yahoo.com 
0
esia168
6/15/2008 4:31:38 PM
William schreef:
> [*attribution dammit*] Ruud:

>> There is no real way to test if a value inside a variable has a
>> numeric "personality". Variables can have multiple "personalities",
>> each with there own binary value.
>>
>> So maybe the problem just comes from the leading zeroes that your
>> sprintf format added?
>
> Not exactly from the leading zeros,
>
> use Data::Dumper;
> my $numStr = sprintf("%4d", 1234);
> print (Dumper $numStr), "\n";
>
> my $numStr = sprintf("%05d", 1234);
> print (Dumper $numStr), "\n";
>
> my $num = sprintf("%05d", 1234);
> $num += 0;
> print (Dumper $num), "\n";
>
>
>   use Language::Prolog::Types::overload;
>
>   use Language::Prolog::Types qw(:ctors);
>
>   print prolog_functor('foo', $numStr), "\n";
>   print prolog_functor('foo', $num), "\n";
>
>
> $VAR1 = '1234';
> $VAR1 = '01234';
> $VAR1 = 1234;
> foo(01234)
> foo(1234)
>
>
> As you can see the last of $VAR1 does not have single quote, so it's
> really in number data type.

It is not "in number data type", it is merely available as numeric. (as
I have said before)


> I think so far, adding zero solve the problem.

That is indeed one of the ways to add a numeric personality to a
variable.
Testing with a numeric operator also "works", see below:

$ perl -Mstrict -Mwarnings -MData::Dumper -wle'
   my $s = "1234";
   print Dumper($s);
   print 1 if $s == 0;
   print Dumper($s);
   print 2 if $s eq "1234";
   print Dumper($s);
'
$VAR1 = '1234';

$VAR1 = 1234;

2
$VAR1 = 1234;

That Data::Dumper prefers to print the numeric face of the variable, if
available, is a matter of choice inside the code of Data::Dumper.
Maybe the other modules that you use, have Data::Dumper embedded?

-- 
Affijn, Ruud

"Gewoon is een tijger."

0
rvtol
6/15/2008 5:01:34 PM
> Testing with a numeric operator also "works", see below:=0A> =0A> $ perl =
-Mstrict -Mwarnings -MData::Dumper -wle'=0A>    my $s =3D "1234";=0A>    pr=
int Dumper($s);=0A>    print 1 if $s =3D=3D 0;=0A>    print Dumper($s);=0A>=
    print 2 if $s eq "1234";=0A>    print Dumper($s);=0A> '=0A> $VAR1 =3D '=
1234';=0A> =0A> $VAR1 =3D 1234;=0A> =0A> 2=0A> $VAR1 =3D 1234;=0A> =0A=0ATh=
at is interesting.=0A=0A=0A> That Data::Dumper prefers to print the numeric=
 face of the variable, if=0A> available, is a matter of choice inside the c=
ode of Data::Dumper.=0A> Maybe the other modules that you use, have Data::D=
umper embedded?=0A=0AThat I am not sure, I have to dig into=0ALanguage::Pro=
log::Types::overload;=0A=0A, if I got time. =0A=0A=0AThank you.=0A=0A=0ASen=
d instant messages to your online friends http://uk.messenger.yahoo.com 
0
esia168
6/15/2008 6:14:29 PM
William schreef:

>> Testing with a numeric operator also "works", see below:
>>
>> $ perl -Mstrict -Mwarnings -MData::Dumper -wle'
>>    my $s = "1234";
>>    print Dumper($s);
>>    print 1 if $s == 0;
>>    print Dumper($s);
>>    print 2 if $s eq "1234";
>>    print Dumper($s);
>> '
>> $VAR1 = '1234';
>>
>> $VAR1 = 1234;
>>
>> 2
>> $VAR1 = 1234;
>>
>
> That is interesting.

Yes, and knowing this can save you performance loss. For example with
mod_perl a variable doesn't stay shared (between forked off processes)
if any of its guts get changed. This leads to code like:

    our $shared_number = "123.45"; $shared_number == $_ and 1 for 0,
0.1;

If you do this before forking, the variable has much more solid guts. :)

-- 
Affijn, Ruud

"Gewoon is een tijger."

0
rvtol
6/16/2008 1:12:05 AM
On Jun 15, 10:09=A0pm, esia...@yahoo.com (William) wrote:
> Hello, if I use the sprintf function it would give me a number STRING, but=
 not number, so I have to trick the string to become number by adding and su=
btracting the number with 1. Is there a better way than this ? I want it to =
be a number data type and not string.
>
> e.g
>
> my $strNumber =3D sprintf("%04d", 123);
> my $number =3D $strNumber + 1 - 1; # to trick Perl to convert to number da=
tatype instead of string.

The only improvement I can see is the rather obvious:

my $number =3D 123;

The sprintf() function *always* returns a string (PV). It therefore
follows that if you want to convert what sprintf() returned into a
number (IV, UV, or NV) then you *must* perform some "trick" on that
returned value. You can do it as:

my $number =3D sprintf("%04d", 123) + 1 - 1; # your original approach
or
my $number =3D sprintf("%04d", 123) + 0;
or
my $number =3D sprintf("%04d", 123) * 1;

And there are other similar convoluted approaches available to you.
You can possibly even get away with such things as:

my $number =3D exp(log(sprintf("%04d", 123))); # not recommending
this :-)

The thing that strikes me as strange is this:

Given that sprintf() always returns a string, and given that you need
a number, why on earth are you using sprintf() in the first place ?
(Perhaps it was just for demonstration purposes ?)

Cheers,
Rob

0
sisyphus359
6/16/2008 1:32:21 PM
> use strict;=0A> use warnings;=0A> =0A> use Devel::Peek qw/Dump/;=0A> =0A>=
 my $numstr =3D sprintf("%4d", 1234);=0A> Dump $numstr;=0A> =0A> $numstr =
=3D sprintf("%05d", 1234);=0A> Dump $numstr;=0A> =0A> my $num =3D sprintf("=
%05d", 1234);=0A> $num +=3D 0;=0A> Dump $num;=0A> =0A> **OUTPUT**=0A> =0A> =
SV =3D PV(0x365ec) at 0x3652c=0A>   REFCNT =3D 1=0A>   FLAGS =3D (PADBUSY,P=
ADMY,POK,pPOK)=0A>   PV =3D 0x182ea94 "1234"\0=0A>   CUR =3D 4=0A>   LEN =
=3D 8=0A> SV =3D PV(0x365ec) at 0x3652c=0A>   REFCNT =3D 1=0A>   FLAGS =3D =
(PADBUSY,PADMY,POK,pPOK)=0A>   PV =3D 0x182ea94 "01234"\0=0A>   CUR =3D 5=
=0A>   LEN =3D 8=0A> SV =3D PVIV(0x37604) at 0x357c4=0A>   REFCNT =3D 1=0A>=
   FLAGS =3D (PADBUSY,PADMY,IOK,pIOK)=0A>   IV =3D 1234=0A>   PV =3D 0x183b=
a74 "01234"\0=0A>   CUR =3D 5=0A>   LEN =3D 8=0A> =0A> So in the first two =
cases you can see that the POK flag (denoting a string=0A> value) is set, b=
ut in the third case, after adding zero, the IOK flag becomes=0A> set (indi=
cating an integer) while the POK flag is cleared, meaning that the the=0A> =
string value is no longer valid, even though there is still space allocated=
 for=0A> it and its value is unchanged.=0A=0AThank you, now it's very clear=
 to me. So scalar variable might look very flexible to our programmer's eye=
s as it can contain either integer or string, but I never know what is happ=
ening behind the scene until you show me that one. It create a big problem =
to me when I did not convert it to integer first before getting into the SW=
I-Prolog . Because Perl string means atom in SWI-Prolog, only Perl number m=
eans number in SWI-Prolog.=0A=0AThanks,=0A=0AWilliam=0A=0A=0ASend instant m=
essages to your online friends http://uk.messenger.yahoo.com 
0
esia168
6/16/2008 5:46:35 PM
William wrote:
>> use strict;
>> use warnings;
>>
>> use Devel::Peek qw/Dump/;
>>
>> my $numstr = sprintf("%4d", 1234);
>> Dump $numstr;
>>
>> $numstr = sprintf("%05d", 1234);
>> Dump $numstr;
>>
>> my $num = sprintf("%05d", 1234);
>> $num += 0;
>> Dump $num;
>>
>> **OUTPUT**
>>
>> SV = PV(0x365ec) at 0x3652c
>>   REFCNT = 1
>>   FLAGS = (PADBUSY,PADMY,POK,pPOK)
>>   PV = 0x182ea94 "1234"\0
>>   CUR = 4
>>   LEN = 8
>> SV = PV(0x365ec) at 0x3652c
>>   REFCNT = 1
>>   FLAGS = (PADBUSY,PADMY,POK,pPOK)
>>   PV = 0x182ea94 "01234"\0
>>   CUR = 5
>>   LEN = 8
>> SV = PVIV(0x37604) at 0x357c4
>>   REFCNT = 1
>>   FLAGS = (PADBUSY,PADMY,IOK,pIOK)
>>   IV = 1234
>>   PV = 0x183ba74 "01234"\0
>>   CUR = 5
>>   LEN = 8
>>
>> So in the first two cases you can see that the POK flag (denoting a string
>> value) is set, but in the third case, after adding zero, the IOK flag becomes
>> set (indicating an integer) while the POK flag is cleared, meaning that the the
>> string value is no longer valid, even though there is still space allocated for
>> it and its value is unchanged.
> 
> Thank you, now it's very clear to me. So scalar variable might look very
> flexible to our programmer's eyes as it can contain either integer or string,
> but I never know what is happening behind the scene until you show me that one.
> It create a big problem to me when I did not convert it to integer first before
> getting into the SWI-Prolog . Because Perl string means atom in SWI-Prolog, only
> Perl number means number in SWI-Prolog.

My apologies, I'm afraid we lost track of your purpose. My best advice is to
force the value to numeric or string at the point of call and *comment* it so
that it doesn't look like a mistake.

  my $ypm = '17'.'60';
  dbase_function($ypm+0);          # Call requires a numeric value

or

  my $index = sprintf '%05d', $n;
  dbase_function("$index");        # Call requires a string value

HTH,

Rob

0
rob
6/16/2008 9:49:56 PM
Reply:

Similar Artilces:

Convert String to Number
I am running PB 7.03 build 10047 on Windows 2000. How do I convert a string value to number in the DataWindow script? I can convert number to string using String(ll_value), but how do I do the reverse? The help file says I should be able to use Number(ls_value), but the error checker tells me that is an unknown function. Thanks for your help. dec('123') or long('123') or integer('123') -- Kim Berghall Sisu Group, Inc. remove no_spam. no_spam.kberghall@sisugrp.com www.sisugrp.com <Scott_Emery> wrote in message news:72D1C6C14C517376005C20...

Convert a String to a Number
How can i convert a character to a number, so that the result is only numerical digits, and would always be the same, besides 26 (plus non-alpha characters) if-then statements. like, A = 1 and A always equals 1 so if I had the string:  1234A after converting, I would get the result:  12341 A doesn't necessarily have to = 1, or even a single digit.  It just has to equal a numerical... number. perhaps you can do something like this.  Store your letters in an array A and maintain a cooresponding array B that has the numeric equivalent you would want to repla...

Convertion numbers to strings
Hello! I have some numbers in data type "Numeric". The task is to write expression wich combines prefix, number and suffix. The number must have no spare zero's on tale. Linke in example: "NDS 20%" "SN 1.5%" "ANT 0.25%" The slyboot server makes all the numbers with the same length of fract. part. like "20.00000" and I couldn't cope with this for two weeks already. I don't know of a way to do that in SQL Anywhere. -- Jim Egan [TeamPS] Dealer Solutions, Inc. Houston, TX See you at the Powersoft User Confer...

convert string to number?
Hi, I have a problem where a number read from a file is being treated as a string by perl (I think!). I am using the module RSPerl which is an interface between Perl and the statistical language R. When i read a column of numbers from a file and pass it to the perl/R function i get an "invalid 'type' (character) of argument" error. The reason i think this is a problem on the Perl side is shown by this pseudocode: while(<FILE>){ ... stuff to extract $value from each row ... push(@list1, $value); } @list2 = (100.2, 232.333, 344.2); # these ...

Convert a string to number
Hi. I want to set a value such as 1.5 or 10 to a text box in a report datawindow at the run time. The value will come from the user before he/she runs the report. How do I convert this string in the text box to a number that will be used for further computation at the summary band? I tried number() function, but it requires a real string and refuses to accept a variable or a column name. Thanks in advance for any help. Jian Kuang If the value comes from the user, it would be in the form of a Retrieve Argument. You can refer to the retrieve argument in the computed field for...

Converting a string to a number
Hello everyone, first post and all that, i got a bit of a problem. First off, the DB information: id: autonumber score: text Both these feilds in the database are numerical, however, the score is used as a text feild, the id an autonumber. When i use a querystring to pass the score over to another page, so that the page produces only information with that perticular score matching, it works. When i try to use the ID number, i get a case miss match. I can only fathom that this is because its an autonumber. However, i need to keep the DB design as it is, as when i add a ne...

how to convert a number to string in SQL?
I search the help for T-sql, still don't know how to convert a number, for example 12345 to a string with formating like 12,345 Thanks for your help. The best place to do such formatting is in the front end, not at the database level.That being said, you could use a combination of the CONVERT and CAST functions (see CAST and CONVERT) to cast the number as a money type, then convert it to a varchar, and then strip off the decimal point and 2 0's at the end:DECLARE @test intSELECT @test = 12345SELECT REPLACE(CONVERT(varchar(50), CAST(@test AS money), 1),'.00','')Or, you could make use of a ...

How do I convert strings to floating number?
Hi there, I have a simple problem that I'm sure has been asked before (so why not again ;)) I have a list like this: 1e-100 2e-100 1e-45 5e-10 1 10 20 and want to make correct assignments: 1e-100 SMALL 2e-100 SMALL 1e-45 BIGGER 5e-10 BIGGER 1 BIGGER 10 BIG 20 BIG But with this code while (<>) { chomp; if ($_ lt 1e-50) { print "$_\t SMALL\n"; } elsif (($_ gt 1e-50) && $_ lt 5) { print "$_\t BIGGER\n"; } elsif ($_ gt 5) { print "$_\t BIGGEST\n"; } I only get ...

How to convert from string to hex number
Hello, I have a requirement for passing a hex value like this to a function. Example code: my $ipmbAddress = getIpmbAddress(...); ## returns 82 getDeviceID($ip, $ipmbAddress); Here in the above code, the getDeviceID() fucntion will accept only 0x82 (hex number). How to convert the number 82 to 0x82 (Note that this should not be as string) I tried the following but not working properly. $ipmbAddress = "0x".$ipmbAddress; $ipmbAddress = hex("$ipmbAddress"); $ipmbAddress = sprintf(0x%0x, $ipmbAddress); getDeviceID($ip, $ipmbAddress); Please help. T...

converting a string to number or integer
erm... how is this done in c#? or convert an object to and number or integer? I need to get the below as a number or int: TotalRecords = conSelProdCount.ExecuteScalar().ToString(); So i can use it in: ProductItem[] arrNews = new ProductItem[TotalRecords]; int rwcnt = 0; while ( dtrProducts.Read()) { string NewVar = dtrProducts["ProductName"].ToString(); arrNews[rwcnt] = new ProductItem(); arrNews[rwcnt].rowcount = @TotalRecords; arrNews[rwcnt].ProductName = dtrProducts["Pro...

Convert string to number #2
Hey all, I have got a text field in the summary band in a report datawindow which I want to set to a value at runtime and the value will come from the user. The value will be used for further addition and substraction. How do I convert this value from a string to a number? Thanks in advance for any help. Jian Kuang Depending on the scale or type of number, you can use Dec ( ), Long ( ), Double ( ), Real ( ), or Integer ( ). All of them call for a string or blob argument. Jian Kuang <jkuang@vitinc.com> wrote in message news:3757DC4F.41131683@vitinc.com... Hey a...

Convert Number In Strings to Numeric Form
Hi, I need some help in converting strings that contain numbers back into numeric form. Apparently, when I sort string formatted number, the arrangement was according to alphanumeric order (eg. 1, 10,11,2,20,21,3,30... ). Thanks, TY on Mon, 15 Apr 2002 13:14:40 GMT, Mok T.Y.-R15382 wrote: > I need some help in converting strings that contain numbers back into > numeric form. Apparently, when I sort string formatted number, the > arrangement was according to alphanumeric order (eg. 1, > 10,11,2,20,21,3,30... ). Are you using the correct comparison operator? As ...

Converting a retruned string value to a number
Hi List, How do i convert a string variable returned by some XPath API into a number so that I can compare it or loop using this number. I am reading one number from XML and I want to use it for looping. Thanks and Regards, Manish ----- Original Message ----- From: Manish Sapariya <manishs@gs-lab.com> Date: Wednesday, April 6, 2005 10:17 am Subject: Converting a retruned string value to a number > Hi List, HellO, > How do i convert a string variable returned by > some XPath API into a number so that I can > compare it or loop using this number. Y...

how to convert form string to number and back?
Hello, I have to read and write some number-values form/to the ultralite-DB. In the reference-DB (Sybase) the fields are defined as numeric(16,6). I have tried the following in CodeWarrier: 1) Defne the fields in the sql declare section as static char fieldname[17]. This works for download / upload, and showing the values. But if I have to UPDATE the table I get an SQLE_CONVERSION_ERROR 2) Define the fields as DECL_DECIMAL(16,6). Now I can't show the value and can't get the Palm-field and write it to the defined variable because I have only found a sample code to get and...

Web resources about - convert string to number - perl.beginners

File:Convert to SVG and move to Commons.svg - Wikipedia, the free encyclopedia
As a courtesy (but not a requirement), please e-mail me or leave a note on my talk page if you use this image outside of Wikipedia. Thanks! As ...

Facebook Co-Founder Dustin Moskovitz Sells 450K Shares, Converts 7M More
The great Facebook stock sale frenzy continues on with a report that Co-Founder Dustin Moskovitz unloaded 450,000 shares in the social network ...

Facebook Announces “App2User” Liquidity Program for Merchants to Convert Rewards Points into Credits
... for Credits, just announced a new Credits program called “App2User,” designed to enable merchants and loyalty program operators to convert their ...

How to Convert Leads Into Buying Customers - The 9 Step Sales Process EVERYONE Should Use
... School of Business in Toronto on the topics of Sales and Entrepreneurship. I shared with them the sales process that I find How to Convert Leads ...

Bitcoin : Should I convert my savings to Bitcoin?
Answer (1 of 7): You should think of this question as "Should I invest all my savings in Bitcoin?", and not "Should I have my savings denominated ...

Convertizo 2 - Convert Units and Currency in Style on the App Store on iTunes
Get Convertizo 2 - Convert Units and Currency in Style on the App Store. See screenshots and ratings, and read customer reviews.

Opinion: These 5 things made me a happy iPad Pro convert
... like I needed a bigger device. But after three weeks with my iPad Pro, several things have changed my mind, and I’m officially a happy convert ...

$100 device converts all your film to digital photos
... still on film negatives. Today, we've got the perfect Amazon Cyber Week deal for you: A Wolverine F2D Mighty 20MP 7-in-1 Film to Digital Converter ...

"ISIS 'ranks' the women, considering foreign women and converts to be especially 'valuable.' "
"According to French journalist Anna Erelle’s recent exposé , ISIS foreign fighters prefer foreign women and converts because the jihadists find ...

Stanford Designs Underwater Solar Cells That Convert Greenhouse Gases Into Fuel
... solar industry and the battle against climate change. Importantly, writes Stanford [&hellip Stanford Designs Underwater Solar Cells That Convert ...

Resources last updated: 12/9/2015 8:44:51 AM